mysql - 自连接的依赖子查询

标签 mysql subquery inner-join self-join

如何将以下依赖子查询更改为自连接?

SELECT d.name, d.created,   
(SELECT SUM( q1.payout ) FROM client AS q1 WHERE q1.uid = d.uid) AS payout,   
(SELECT COUNT( q2.uid ) FROM client AS q2 WHERE q2.uid = d.uid AND q2.winning =1) AS cnt   
FROM client AS d group by d.name, d.created  ORDER BY cnt DESC   LIMIT 0 , 10; 

最佳答案

SELECT  d.name, d.created, SUM(q1.payout) AS psum, COUNT(q2.uid) AS cnt
FROM    client d
LEFT JOIN
        client q1
ON      q1.uid = d.uid
LEFT JOIN
        client q2
ON      q2.uid = d.uid
        AND q2.winning =1
GROUP BY
        d.name, d.created
ORDER BY
        cnt DESC
LIMIT 0, 10

如果uid是一个PRIMARY KEY,你可以这样重写它:

SELECT  d.name, d.created, SUM(payout) AS psum, COUNT(IF(winning = 1, uid, NULL)) AS cnt
FROM    client d
GROUP BY
        d.name, d.created
ORDER BY
        cnt DESC
LIMIT 0, 10

关于mysql - 自连接的依赖子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1306584/

相关文章:

MySQL 子查询在没有匹配结果时忽略整行

c# - 如何显示两个表的信息?使用内连接

sql - 内部联接顺序在我的查询中确实很重要

mysql - 子查询(以及带有连接的查询)不使用 MySQL 索引 (MyISAM)

php - mysql 如何通过查询父级来获取子级的最小id

php - MySQL 内部连接并将行转换为列

php - codeigniter 事件记录或一般 mysql 帮助

php - 如何匹配与一组特定的其他记录关联的记录?

c# - C# 中多个数据集 Winform 项目的 RDLC 问题

php - Doctrine : how to use Replace function