所以我有三个表,但是我的SQL JOIN语句由于某种原因不断返回相同的结果,而不是返回所有行并按第三行排序。
此语句正确工作并按预期返回gName和uName:
SELECT
rpg.name AS gName,
u.username AS uName
FROM
roleplay_gangs rpg
LEFT JOIN
users u on u.id = rpg.owner_id
但是当我尝试通过第三个表中的字段选择和排序时,结果由于某种原因不符合预期。我环顾了一会儿,尝试了多次,但似乎没有一个对我有用,从来没有加入超过2个表并同时订购。
所以......我试图用第三张表尝试:
SELECT
rpg.name AS gName,
u.username AS uName,
COUNT(rpgt.gang_id) AS gCount
FROM
roleplay_gangs rpg
LEFT JOIN
users u on u.id = rpg.owner_id
LEFT JOIN
roleplay_gangs_turfs rpgt on rpg.id = rpgt.gang_id
ORDER BY gCount
结果:
gName | uName | gCount
-----------------------
test | hello | 2
预期:
gName | uName | gCount
-----------------------
test | hello | 2
zmaj | hello | 0
thir | ajtea | 0
我们非常感谢您的帮助,如果需要,可以根据要求发布更多详细信息。
答案 0 :(得分:0)
当您使用group by
等聚合时,您要选择的结果中您希望在结果中唯一的字段应包含在count
子句中:
SELECT
rpg.name AS gName,
u.username AS uName,
COUNT(rpgt.gang_id) AS gCount
FROM
roleplay_gangs rpg
LEFT JOIN
users u on u.id = rpg.owner_id
LEFT JOIN
roleplay_gangs_turfs rpgt on rpg.id = rpgt.gang_id
GROUP BY
rpg.name,
u.username
ORDER BY gCount