【问题标题】:Including Omitted Record in NOT IN Condition在 NOT IN 条件中包含省略的记录
【发布时间】: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 表中的用户越多,我的&lt;select&gt; 选项卡中可用的用户就越少

当涉及到编辑Admin 表中的现有用户时,我的&lt;select&gt; 标记应该包含所有要添加的可用用户以及当前映射的用户,但是由于@ 987654329@ 子句从查询结果中省略了这个单个用户。我可以修改此查询以包含所有可用的Users 以添加包括当前存在的用户标签吗?

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

【问题讨论】:

  • 当我在该 Admin 表中编辑用户 2 的记录时,我仍应将用户 2 视为可用选项,但它被省略了......这里你说的省略是什么意思。跨度>
  • 由于NOT IN 条件,在用户 2 中省略不是结果集的一部分,但我想包括用户 2
  • 在您的子查询中,不只是添加一个用户不应该等于用户2的条件。
  • 或者更好的是,在您尝试为管理员提取数据时删除整个子查询。 (使用不同的查询)
  • 我同意@JohnRuddell,这听起来像您正在尝试使用查询来查找所有非管理员用户,而您只想查看任何用户(对于编辑过程,而不是必须添加到管理员),但无论如何这应该是一个不同的查询。

标签: java mysql sql spring-mvc


【解决方案1】:

这样的?

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

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2021-11-02
    相关资源
    最近更新 更多