显示语句 sql 的补码结果
Show complement results from statement sql
我有一个类似 twiter 的网站,用户可以在其中关注另一个用户,我需要向他们展示关注新人的建议
TABLE USERS
user id_user
A 1
B 2
C 3
D 4
E 5
F 6
TABLE COMMUNITY
id_follower id_followed
3 4
3 5
3 6
3 (C) 跟随 4,5,6 (D,E,F)
我得到了显示关注用户的语句,4,5,6 (D,E,F):
SELECT user,id_followed
FROM users,community
WHERE users.id_user=community.id_followed AND community.id_follower=3
GROUP BY user
如何显示后跟 C(3) 的用户,换句话说,1,2 (A,B)
我需要EXCEPT
吗? LEFT OUTER JOIN
?
SELECT id_followed
FROM community
EXCEPT
(
SELECT user,id_followed
FROM users,community
WHERE users.id_user=community.id_followed AND community.id_follower=3
GROUP BY user
)
RETRIEVE ERROR.
你可以使用 NOT EXISTS
SELECT *
FROM users u
WHERE NOT EXISTS
(
SELECT *
FROM community c
WHERE c.id_follower=3
AND ( u.id_user = c.id_followed or u.id_user = c.id_follower)
)
简单的方法就是使用minus operator。它看起来像:
SELECT id_user
FROM users
MINUS
SELECT id_followed
FROM community
WHERE community.id_follower=3
你想做的事情可以通过使用 "not in" 子句来实现
尝试以下查询来实现您的目标
SELECT *
FROM
users
WHERE
id_user not in
(SELECT
id_followed
FROM
community
WHERE
id_follower = 3)
AND
id_user <> 3
我有一个类似 twiter 的网站,用户可以在其中关注另一个用户,我需要向他们展示关注新人的建议
TABLE USERS
user id_user
A 1
B 2
C 3
D 4
E 5
F 6
TABLE COMMUNITY
id_follower id_followed
3 4
3 5
3 6
3 (C) 跟随 4,5,6 (D,E,F)
我得到了显示关注用户的语句,4,5,6 (D,E,F):
SELECT user,id_followed
FROM users,community
WHERE users.id_user=community.id_followed AND community.id_follower=3
GROUP BY user
如何显示后跟 C(3) 的用户,换句话说,1,2 (A,B)
我需要EXCEPT
吗? LEFT OUTER JOIN
?
SELECT id_followed
FROM community
EXCEPT
(
SELECT user,id_followed
FROM users,community
WHERE users.id_user=community.id_followed AND community.id_follower=3
GROUP BY user
)
RETRIEVE ERROR.
你可以使用 NOT EXISTS
SELECT *
FROM users u
WHERE NOT EXISTS
(
SELECT *
FROM community c
WHERE c.id_follower=3
AND ( u.id_user = c.id_followed or u.id_user = c.id_follower)
)
简单的方法就是使用minus operator。它看起来像:
SELECT id_user
FROM users
MINUS
SELECT id_followed
FROM community
WHERE community.id_follower=3
你想做的事情可以通过使用 "not in" 子句来实现 尝试以下查询来实现您的目标
SELECT *
FROM
users
WHERE
id_user not in
(SELECT
id_followed
FROM
community
WHERE
id_follower = 3)
AND
id_user <> 3