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
这应该工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...