我必须去桌子。其中一个user_profile
有一个名为user_profile_id
的字段,另一个表user_friend
有两个名为user_profile1_id
和user_profile2_id
的字段(它们是FK到第一个表)。
我想检查user_profile中是否有任何用户不在user_friend表中,user_profile1_id和user_profile2_id中都没有。我应该使用什么查询!?
答案 0 :(得分:2)
首先,我建议您在user_profile_table中使用循环外键,其中外键引用回同一个表的主键。这样您就可以自己创建另一个表,仅用于用户之间的关系。
但是,使用您的设计,您可以使用以下查询:
SELECT user_profile_id
FROM user_profile A
WHERE
NOT EXISTS(
SELECT * FROM user_friends B
WHERE B.user_profile1_id=A.user_profile_id OR
B.user_profile2_id=A.user_profile_id
)
答案 1 :(得分:1)
试试这个
SELECT * FROM users
LEFT JOIN friends f1 ON (users.id = friends.uid)
LEFT JOIN friends f2 ON (users.id = friends.fid)
WHERE f1.uid IS NULL AND f2.uid IS NULL
答案 2 :(得分:1)
尝试(这是MSSQL,但在MySQL中应该类似)
select
*
from
user_profile up
left join user_friend uf
on up.user_profile_id = uf.user_profile1_id
or up.user_profile_id = uf.user_profile2_id
where
coalesce(uf.user_profile1_id,uf.user_profile2_id) is null
答案 3 :(得分:0)
尝试:
SELECT user_profile_id
FROM user_profile
WHERE
user_profile_id NOT IN (SELECT DISTINCT user_profile1_id FROM user_friend)
AND user_profile_id NOT IN (SELECT DISTINCT user_profile2_id FROM user_friend)
可能有更高效的查询,但这应该可以胜任。