包括NOT IN条件中的省略记录

时间:2015-11-06 06:13:58

标签: java mysql sql spring-mvc

我有一个简单的Spring MVC Data项目设置,我正在尝试选择Admin表中尚不存在的用户列表。这是我的存储库方法

SELECT u FROM User u WHERE u.id NOT IN (SELECT a.id FROM Admin a WHERE a.id = :id) 
List<User>findAvailableUsers(@Param("id") Long id)

效果很好,我添加到Admin表的用户越多,我<select>标签中的可用内容越少

对于编辑 Admin表中的现有用户,我的<select>标记应该包含要添加的所有可用用户以及当前映射的用户,但是由于NOT IN子句,查询结果中省略了该单个用户。我是否可以修改此查询以包含所有可用的User以添加包括当前存在标记的用户?

示例:用户2和用户4已添加到Admin表中。当我在该Admin表中编辑User 2的记录时,我仍然应该将User 2视为可用选项,但它被省略 enter image description here

1 个答案:

答案 0 :(得分:0)

这样的东西?

SELECT u FROM User u WHERE u.id NOT IN (SELECT a.id FROM Admin a WHERE a.id = :id) OR u.id = :idToGet