微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL查询以获取所有最高ID

如何解决MySQL查询以获取所有最高ID

| 我有这样的表或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

解决方法

此解决方案无需使用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)
可能有效,但存在两个问题。 它绝对无法保存(我不是100%确定我的解决方案是) 如果有人输入1AAA之类的名称,则会引起问题,因为
Concat(11,\'AAA\')
=
Concat (1,\'1AAA\')
,
SELECT id,name,url
FROM yourtable
WHERE id IN (SELECT max(id) FROM yourtable GROUP BY name))
内部查询为表中的每个\'name \'获取最高的ID号,然后外部查询使用这些ID来获取ID所在的其余行。,加
GROUP BY id ORDER BY id ASC
就像是
SELECT id,url FROM yourtable GROUP BY id ORDER BY id ASC
,终于明白了。
SELECT id,url,sum(id) as demosum FROM table_name GROUP BY name ORDER BY ID DESC
这应该工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。