【发布时间】:2015-11-06 06:13:57
【问题描述】:
我有一个简单的 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> 标记应该包含所有要添加的可用用户以及当前映射的用户,但是由于@ 987654329@ 子句从查询结果中省略了这个单个用户。我可以修改此查询以包含所有可用的Users 以添加包括当前存在的用户标签吗?
示例:用户 2 和用户 4 已添加到 Admin 表中。当我在该 Admin 表中编辑用户 2 的记录时,我仍然应该将用户 2 视为可用选项,但它被省略了
【问题讨论】:
-
当我在该 Admin 表中编辑用户 2 的记录时,我仍应将用户 2 视为可用选项,但它被省略了......这里你说的省略是什么意思。跨度>
-
由于
NOT IN条件,在用户 2 中省略不是结果集的一部分,但我想包括用户 2 -
在您的子查询中,不只是添加一个用户不应该等于用户2的条件。
-
或者更好的是,在您尝试为管理员提取数据时删除整个子查询。 (使用不同的查询)
-
我同意@JohnRuddell,这听起来像您正在尝试使用查询来查找所有非管理员用户,而您只想查看任何用户(对于编辑过程,而不是必须添加到管理员),但无论如何这应该是一个不同的查询。
标签: java mysql sql spring-mvc