MySQL SELECT唯一列,其他列为max

M.V*_*.V. 3 mysql select unique max

我有这样的表

  id     |     serial_num     |      version     | .....
  1      |         1          |          1       | .....
  2      |         2          |          1       | .....
  3      |         2          |          2       | .....
  4      |         3          |          1       | .....
  5      |         4          |          1       | .....
  6      |         5          |          1       | .....
  7      |         5          |          2       | .....
  8      |         5          |          3       | .....
Run Code Online (Sandbox Code Playgroud)

现在我想要选择的是获取具有最大版本和唯一serialn_num的行...

结果将是:

  id     |     serial_num     |      version     | .....
  1      |         1          |          1       | .....
  3      |         2          |          2       | .....
  4      |         3          |          1       | .....
  5      |         4          |          1       | .....
  8      |         5          |          3       | .....
Run Code Online (Sandbox Code Playgroud)

我的SQL有点复杂,这就是为什么我没有通过使用MAX()解决问题...我没有几个左连接等...

有任何想法吗?

最好的问候,谢谢你的时间!

fth*_*lla 7

试试这个:

SELECT yourtable.*
FROM yourtable
WHERE (serial_num, version) in (select serial_num, max(version)
                                from yourtable
                                group by serial_num)
Run Code Online (Sandbox Code Playgroud)

子查询将返回serial_num的最大版本,因此这将返回serial_num具有最大值的所有行.看到这个小提琴.