簡體   English   中英

如何連接兩個表並按第三個表排序?

[英]How to join two tables and order by a third table?

所以我有三個表,但是我的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

但是,當我嘗試通過第三個表中的字段選擇並排序時,由於某種原因,結果與預期不符。 我環顧了一段時間,嘗試了多次,但似乎沒有一個對我有用,從來不必同時加入兩個以上的表和訂單。

所以...我嘗試用第三張桌子試一下:

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

感謝您的幫助,如果需要,可以根據要求發布更多詳細信息。

使用諸如count聚合時,您要在結果中唯一的字段應包含在group by子句中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM