Java 如何使用LIKE执行朋友搜索,而不显示已经在我的朋友列表中的朋友?
我的桌子是这样的: 我的Java 如何使用LIKE执行朋友搜索,而不显示已经在我的朋友列表中的朋友?,java,mysql,Java,Mysql,我的桌子是这样的: 我的USER\u ID是1,我与USER\u 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
USER\u ID
是1,我与USER\u 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%';
还有一个问题是,我的书(它是为我的大学项目写的)没有告诉我任何关于左连接
,连接
等的事情。有没有办法得到这种情况下的查询
表“user”中的所有其他用户名,它们不在我的好友列表中
这将是:
SELECT *
FROM user
WHERE user.user_id NOT IN
( SELECT frnd.frnd_id
FROM frnd
WHERE user_id = 1
)
;
您可能还需要和user.user\u id!=1,当然您可以添加任何其他限制,例如您的和名称,如“%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%'
;
您需要使用子查询
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%'
您需要使用子查询。
此示例将显示所有不是%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的信息,请尝试此处:谢谢,我是一名学生,所以不太了解IN子句的用法。这将有助于拓宽我对SQL的思考。非常感谢。谢谢,我大部分的语言问题都是通过w3schools解决的。