这是我试图通过MySQL查询彻底解决的问题的简化视图.这不是我要处理的实际表.
如果我有下表:
Name Buyer ID
John Fred 4
John Smith 3
Fred Sally 2
John Kelly 1
Name Buyer ID
John Fred 4
Fred Sally 2
我试图通过执行嵌套的select语句来实现此目的,其中首先执行“ ORDER BY ID DESC”,然后在最外面的SELECT上执行“ GROUP BY NAME”.并且,尽管这是解决问题的一种round回方式,但似乎通过订购,可以将正确的选择返回给我.不幸的是,“ GROUP BY”不能“保证”“买方”列将包含预期的条目.
有什么有用的建议可以将其实现为查询吗?目前,我在大型表转储上运行的查询效率极低的PHP“版本”-绝对不是最佳选择.
解决方法:
试试这个,子查询背后的想法是它使用MAX(聚合函数)获取每个Name的最新ID.然后将它与子查询的两列上的表本身连接起来.
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT name, MAX(ID) maxID
FROM tableName
GROUP BY name
) b ON a.Name = b.Name AND
a.ID = b.MaxID