PHP-按列分组,并依赖于另一列

这是我试图通过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  

这样我们就可以按“名称”分组并显示最新的行/买方/ ID.

我试图通过执行嵌套的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

> SQLFiddle Demo

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...