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

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

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

相关推荐