我的表格如下:
我的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
等事情的任何信息。有没有办法获得这种情况的查询?
答案 0 :(得分:1)
表“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%'
;
答案 1 :(得分:0)
您需要使用子查询
SELECT u.* FROM user u
WHERE u.user_id != 1
AND u.user_id NOT IN (
SELECT f.frnd_id FROM frnd f
WHERE f.user_id = 1
) AND u.user_name LIKE '%rah%'
答案 2 :(得分:0)
您需要使用子查询。 此示例将显示所有不是%prash%的朋友:
select *
from [user]
where USER_ID not in (
select frnd_id
from frnd
where [user_id] in ( select [USER_ID] from [user] where NAME like '%prash%' )
)
and NAME not like '%prash%'
这将在没有ID的情况下过滤两种方式,但如果您使用的搜索字符串将超过一个用户,则会过滤掉它。
你必须检查有多少用户加工搜索字符串并迭代它。
如果您正在寻找有关联接和SQL的信息,请尝试此处:http://www.w3schools.com/sql/sql_join.asp