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