1

我正在尝试编写一个查询,该查询返回用户个人资料信息,以及另一个表中 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)。对此的任何帮助都非常感谢,并在此先感谢。

4

3 回答 3

3

您实际上不需要为此加入 - 您可以进行三个单独的选择。

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

结果:

用户名 count_leadID count_followID
用户A 2 1             
于 2010-09-17T20:48:43.250 回答
0
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
于 2010-09-17T20:47:54.830 回答
0
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 上有索引,那么这可以加快查询速度,特别是如果您要同时查询几个用户而不是所有用户。

于 2010-09-17T22:27:23.190 回答