我有一个名为 users 的表,其中包含字段 id、电子邮件、用户名、名字和姓氏。
我有另一个名为 friends 的表,其中包含字段 id、user1、user2 和关系。
我在这个不应该那么难的连接查询上遇到了很大的困难:(。
我想找到尚未与您相关的最受欢迎的用户。例如,我已经生成了一个关系数组,我想查找用户信息以及他们拥有的与您不相关的用户的关系数量。
到目前为止,这是我的查询,但由于某种原因我无法让它工作。
select id, email,username,firstname,lastname
from users as userInformation
left join (select count(*)
from friends
where friends.user1 = userInformation.id or friends.user2 = userInformation.id
) as x
where users.id NOT IN (2,44,26,33,1)
部分中的“2,44,26,33,1”not in
是任意的,具体取决于登录的用户。
我无法正常工作的部分是左连接,它增加了关系计数。
只是为了提供帮助,这里有两个有效的查询。我只需要加入第二个作为每个用户第一个查询的列
select id, email,username,firstname,lastname from users where id NOT IN (2,44,26,33,1)
select count(*) from friends where user1 =2 or user2 = 2
但是第二个查询应该针对第一个查询中的每个 id。希望清除它。
这越来越近了
select id, email,username,firstname,lastname
from users as help
left join (
select count(*)
from friends
where user1 = help.id or user2 = help.id) as friendCounter
where help.id NOT IN (2,44,26,33,1)
出于某种原因,它最终无法识别 where 子句中的 help.id。