MySQL查询以获取所有最高ID

标签 mysql sql

我有一个这样的表或查询结果。

    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/

相关文章:

php - 无法使用 php 文件更新 phpmyadmin 中的表

Java jdbc从mysql中检索特定数据

php - 使用 MySQLi 将 PHP 输入与数据库进行比较

sql - 如何在 PostgresQL 中返回换行符和 ** 字符之前的文本

C# - 为什么时间和日期不保存在 mysql 数据库中?

sql - sysdate和getdate()的常用sql是什么

加载数据本地 INFILE 上的 Python2.7 MySQL 连接器错误

mysql - 无法从触发器内的 SELECT 查询获取值

java - 应用程序卡在 hibernate 状态 txOracle.commit();

sql - 更新 SQL Server 2012 中的 varbinary(MAX) 字段丢失最后 4 位