[英]MySQL join multiple columns from same table
我正在嘗試編寫一個查詢,該查詢返回用戶個人資料信息以及另一個表中2列中用戶ID的出現次數。 下面的例子:
TableA
userID userName
1 UserA
2 UserB
TableB
LinkID leadID followID
1 1 2
2 1 3
3 2 1
針對UserID 1的查詢我希望檢索UserA , 2 (leadID中1的出現)和1 (在followID中1的出現)。 非常感謝您的任何幫助,並在此先感謝。
您實際上不需要為此而加入-您可以進行三個單獨的選擇。
SELECT
(
SELECT userName
FROM TableA
WHERE userID = 1
) AS userName,
(
SELECT COUNT(*)
FROM TableB
WHERE leadID = 1
) AS count_leadID,
(
SELECT COUNT(*)
FROM TableB
WHERE followID = 1
) AS count_followID
結果:
userName count_leadID count_followID UserA 2 1
SELECT a.userName,
SUM(IF(b.leadId = a.userId, 1, 0) as Leads,
SUM(IF(b.followId = a.userId, 1, 0) as Follows
FROM TableA a
TableB b
GROUP BY a.userName
SELECT a.userName,
b1.count(*) as leads,
b2.count(*) as follows
FROM TableA a
INNER JOIN TableB b1 on a.userID = b1.leadID
INNER JOIN TableB b2 on a.userID = b2.followID
GROUP BY a.userName
根據mySQL的優化方式以及是否在leadID和followID上具有索引,這可以加快查詢的速度,特別是如果您要查詢幾個用戶而不是同時查詢所有用戶時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.