我有这样的表
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 | .....
现在我想要选择的是获取具有最大版本和唯一serialn_num的行…
结果将是:
id | serial_num | version | .....
1 | 1 | 1 | .....
3 | 2 | 2 | .....
4 | 3 | 1 | .....
5 | 4 | 1 | .....
8 | 5 | 3 | .....
我的SQL有点复杂,这就是为什么我没有通过使用MAX()解决问题…我没有几个左连接等…
有任何想法吗?
最好的问候,谢谢你的时间!
解决方法:
试试这个:
SELECT yourtable.*
FROM yourtable
WHERE (serial_num, version) in (select serial_num, max(version)
from yourtable
group by serial_num)
子查询将返回serial_num的最大版本,因此这将返回serial_num具有最大值的所有行.见this fiddle.
标签:mysql,unique,select,max
来源: https://codeday.me/bug/20190725/1536134.html