我有一个这样的表或查询结果。
id name url
--- ---- ---
1 AAA http://aaa.com?r=123
2 AAA http://aaa.com?r=456
1 BBB http://bbb.com?r=xyz
2 BBB http://bbb.com?r=qsd
3 BBB http://bbb.com?r=fgh
4 BBB http://bbb.com?r=jkl
1 CCC http://ccc.com?r=a23
3 CCC http://ccc.com?r=bc6
我真正想要的是获得所有具有最高 ID 的唯一名称。所以基本上就是这样。
id name url
--- ---- ---
2 AAA http://aaa.com?r=456
4 BBB http://bbb.com?r=jkl
3 CCC http://ccc.com?r=bc6
我可以向查询添加或更改什么以获得该结果。
建议的解决方案不起作用或返回错误的结果
好吧,我终于自己找到了,这似乎可行:
SELECT id, name, url
FROM yourtable
WHERE concat(id, name) IN
(SELECT concat(max(id), name) FROM yourtable GROUP BY name)
id name url
--- ---- ---
2 AAA http://aaa.com?r=456
4 BBB http://bbb.com?r=jkl
3 CCC http://ccc.com?r=bc6
最佳答案
SELECT id, name, url
FROM yourtable
WHERE id IN (SELECT max(id) FROM yourtable GROUP BY name))
内部查询获取表中每个“名称”的最大 ID 号,然后外部查询使用这些 ID 获取这些 ID 所在的其余行。
关于MySQL查询以获取所有最高ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709396/