我的表如下所示:
我的USER_ID
是1,我是USER_ID = 2
和3
的朋友。
我尝试了许多查询,以从表“ user”中搜索所有其他用户名,这些名称尚未在我的朋友列表中。这是查询之一(下面列出),尝试使用,但显示重复的条目
select *
from frnd,user
where frnd.frnd_id != user.USER_ID
AND user.USER_ID != frnd.frnd_id
AND frnd.USER_ID = 1
AND NAME LIKE '%rah%';
还有另一个问题是,我的书(用于我的大学项目)没有告诉我有关
LEFT JOIN
,JOINS
等问题的任何信息。有没有一种方法可以查询这种情况? 最佳答案
表“ user”中所有其他用户的名字,这些名字还不在我的朋友列表中。
那将是:
SELECT *
FROM user
WHERE user.user_id NOT IN
( SELECT frnd.frnd_id
FROM frnd
WHERE user_id = 1
)
;
您可能还需要
AND user.user_id != 1
,并且当然可以添加任何其他限制,例如您的AND name LIKE '%rah%'
:SELECT *
FROM user
WHERE user.user_id != 1
AND user.user_id NOT IN
( SELECT frnd.frnd_id
FROM frnd
WHERE user_id = 1
)
AND user.name LIKE '%rah%'
;