在NOT IN条件下包含省略记录

问题描述:

我有一个简单的Spring MVC数据项目设置,我试图选择Admin表中尚不存在的用户列表。这里是我的仓库方法在NOT IN条件下包含省略记录

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已添加到管理员表中。当我编辑该用户2在该管理表中的记录时,我仍然应该看到用户2作为可用选项,但它被省略了 enter image description here

+0

当我编辑用户2在该管理表中的记录,我仍然应该看到用户2作为一个可用的选项,但它被省略....这里你什么意思是省略。 –

+0

因为在用户2中不属于结果集的一部分,因为“NOT IN”条件,但我想在您的子查询中包含用户2 –

+0

,而不仅仅是添加一个条件,即用户不应该等于user2 。 –

类似这样?

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