被MySQL查询结果搞糊涂了

被MySQL查询结果搞糊涂了,mysql,Mysql,所以我并不擅长SQL,我有一个复杂的MySQL查询,我迷失在其中。我不明白的是,上面UNION部分查询得到的所有结果都乘以8。这怎么可能?为什么它们要乘以8,我怎么才能阻止它?我还有一些其他类似的问题,它们都有同样的问题。任何关于为什么会发生这种情况的想法都将不胜感激。谢谢大家! SELECT best_thrown FROM( SELECT CASE WHEN rageup_echelon.party_id IS NULL THEN 0 ELSE SUM(CASE WH

所以我并不擅长SQL,我有一个复杂的MySQL查询,我迷失在其中。我不明白的是,上面UNION部分查询得到的所有结果都乘以8。这怎么可能?为什么它们要乘以8,我怎么才能阻止它?我还有一些其他类似的问题,它们都有同样的问题。任何关于为什么会发生这种情况的想法都将不胜感激。谢谢大家!

SELECT best_thrown
    FROM(
        SELECT CASE WHEN rageup_echelon.party_id IS NULL THEN 0 ELSE SUM(CASE WHEN rageup_echelon.echelon_vote = 1 THEN 5 ELSE 0 END) - SUM(CASE WHEN rageup_echelon.echelon_vote = 0 THEN 3 ELSE 0 END) END AS best_thrown
        FROM rageup_parties LEFT JOIN rageup_echelon ON rageup_parties.party_id = rageup_echelon.party_id
                            LEFT JOIN rageup_team_hosts ON rageup_parties.party_team_id = rageup_team_hosts.team_id
        WHERE rageup_team_hosts.team_id = 1 || rageup_team_hosts.team_id = 2 || rageup_team_hosts.team_id = 3
        AND rageup_parties.party_status = 'approved'
        AND rageup_parties.party_invites = 'public'
        AND rageup_team_hosts.user_id = 1
        GROUP BY rageup_parties.party_id
        UNION
        SELECT CASE WHEN rageup_echelon.party_id IS NULL THEN 0 ELSE SUM(CASE WHEN rageup_echelon.echelon_vote = 1 THEN 5 ELSE 0 END) - SUM(CASE WHEN rageup_echelon.echelon_vote = 0 THEN 3 ELSE 0 END) END AS best_thrown
        FROM rageup_parties LEFT JOIN rageup_echelon
        ON rageup_parties.party_id = rageup_echelon.party_id
        WHERE rageup_parties.party_host_id = 1
        AND rageup_parties.party_status = 'approved'
        AND rageup_parties.party_invites = 'public'
        AND rageup_parties.party_team_id = 'user'
        GROUP BY rageup_parties.party_id
        ORDER BY best_thrown DESC
        LIMIT 1
    ) AS T

为了进行调试,只运行第一个查询,而不使用
groupby
stuff,并查看返回的底层行


还要注意的是,您正在使用
从rageup\u方的左连接
rageup\u团队\u主机
——使匹配的
团队\u主机
条目成为可选项,但随后需要在
WHERE
子句中将
团队id
设置为非空值。如果您知道数据脏到需要
左连接
,请将这些条件移动到每个
左连接的
ON
子句中

谢谢您如此快速的响应。我试着选择*,然后把这群人带走了。这对我有点帮助。它每次返回8次每个结果,行中唯一的区别是team_hosts表的索引计数从1到8。team_hosts表中的这8行对于team_id列和user_id列都具有相同的值“1”。这确实解释了一些问题,但我仍然不知道如何解决它。我将把这些条件转移到ON子句,谢谢,我不认为这是这里的确切问题。那么基本上,我如何让这个查询只检查team\u hosts表中的team\u id和user\u id,而不使用具有正确team\u id和user\u id的每一行;就一排?哈哈,问题其实是ON条款。谢谢