【发布时间】:2019-10-11 08:05:51
【问题描述】:
有人可以告诉我我在这里做错了什么吗?我想要做的是,我想获得那些跟随一个人的人的信息,假设我跟随一个人。这里,1003 是我已经关注的人的用户 ID,1001 是我的用户 ID
SELECT USERID,
USERNAME,
PHOTO,
COUNT(FOLLOWER)
FROM USERS
LEFT JOIN FOLLOW
ON USERS.userid = Follow.following
WHERE USERID IN (SELECT FOLLOWING
FROM FOLLOW
WHERE FOLLOWER IN (SELECT FOLLOWER
FROM FOLLOW
WHERE FOLLOWING = 1003)
GROUP BY USERID,
USERNAME,
PHOTO
EXCEPT
(SELECT FOLLOWING
FROM FOLLOW
WHERE FOLLOWING = 1003
OR FOLLOWER = 1001))
【问题讨论】:
-
如果去掉 EXCEPT 部分,它会起作用吗? (分而治之……en.wikipedia.org/wiki/Divide-and-conquer_algorithm)
-
@jarlh 恐怕我删除它也不起作用
-
GROUP BY ... COUNT(FOLLOWER)肯定是不正确的。COUNT之类的聚合函数在GROUP BY创建的组上运行,因此不能在其中引用。但似乎您尝试分组的其余列甚至都不是来自该表。不清楚你想用它做什么。为什么在EXCEPT之前还需要GROUP BY? -
@MartinSmith 是的,抱歉,我没有注意到我在 group by 中添加了 COUNT(FOLLOWER)。但即使我删除它,它也会显示相同的错误
-
只需删除整个
GROUP BY。你没有做任何聚合,所以不需要它
标签: sql sql-server