Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用LIKE执行朋友搜索,而不显示已经在我的朋友列表中的朋友?_Java_Mysql - Fatal编程技术网

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解决的。