簡體   English   中英

MySQL從同一個表聯接多個列

[英]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的查詢我希望檢索UserA2 (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.

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