【发布时间】:2012-12-19 01:09:07
【问题描述】:
我有这样的桌子
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 | .....
现在我要选择的是获取具有最大版本和唯一序列号的行...
结果是:
id | serial_num | version | .....
1 | 1 | 1 | .....
3 | 2 | 2 | .....
4 | 3 | 1 | .....
5 | 4 | 1 | .....
8 | 5 | 3 | .....
我的 SQL 有点复杂,这就是为什么我不使用 MAX() 解决问题的原因...我几乎没有左连接等...
有什么想法吗?
最好的问候,感谢您的宝贵时间!
【问题讨论】:
-
您能否再解释一下结果,您要达到什么目的?
-
当然......抱歉之前没有解释......它应该作为带有附加日期的修订系统(标记为......)......此时我想选择所有新数据(MAX版本)并且我希望它是唯一的(serial_num)......我不想使用MAX()来解决这个问题,因为我可能会得到错误的数据......比如说SELECT id,MAX(version),MAX( serial_num) from t GROUP BY serial_num 可能会返回错误的 ID,因为它不在 MAX() 中......我希望我解释得很好......
-
您如何确定选择哪个
id来作为唯一的serial_num?例如似乎每个唯一的 serial_num 都是 max(id)