[英]MySQL query to get all highest id's
我有這樣的表或queryresult。
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所在的其余行。
添加GROUP BY id ORDER BY id ASC
就像是
SELECT id, name, url FROM yourtable GROUP BY id ORDER BY id ASC
此解決方案無需使用Concat即可工作
SELECT yt.id,
yt.name,
yt.url
FROM yourtable yt
INNER JOIN
(SELECT max(id) id ,
name
FROM yourtable GROUP BY name) maxyt
ON yt.id = maxyt.id
AND yt.name = maxyt.name;
使用concat(id, name)
可能有效,但是存在兩個問題。
Concat(11,'AAA')
= Concat (1,'1AAA')
終於明白了。
SELECT id, name, url, sum(id) as demosum FROM table_name GROUP BY name ORDER BY ID DESC
這應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.