如何从数据库中查询/搜索某个用户的非朋友的名字?

时间:2019-03-26 14:06:26

标签: mysql sql jpa

我在数据库中有2个表:Users和Friend。我想查询使用@Query搜索与某个用户不是朋友的用户名。查询应如何显示?

我为此创建了此查询:

@Query("SELECT u.name FROM Users u WHERE u.user_id NOT IN
             (SELECT f.friend_id FROM Friend f WHERE f.user_id= ?1)
        AND u.name LIKE %?2% ", nativeQuery = true)
List<String> searchingNonFriendsByUserId(int userId, String search)

但这不能给出我想要的正确结果。

有关表格的信息/属性:

用户(用户ID PK,名称,分数)

朋友(id PK,user_id,friend_id)

澄清示例

用户: (1,“ test”,5),(2,“ Tim”,10),(5,“ Tom”,11),(4,“ test2”,13),(6,“ Tam”, 0)

好友:(1,1,2),(2,1,5),(3,1,4),(4,2,5),(5,2,1)

例如,我想要不是“ Tim”的朋友(user_id = 2)的用户名称(由LIKE子句指定)。蒂姆在这里是“汤姆”和“测试”的朋友。例如,对于user_id = 2,我在LIKE子句的%之间键入字母“ T”,然后只查询“ Tam”和“ test2”。

2 个答案:

答案 0 :(得分:1)

使用“不存在”。

通过排除在给定用户所在的myFunc表中具有一行的任何用户(user_id =?1)来选择与给定用户ID不是朋友的用户。

Friend

答案 1 :(得分:0)

您可以尝试一下吗?

从不存在的用户u中选择u.name(

从朋友中选择User_id,其中user_id =?1)