当前位置: 首页 > 知识库问答 >
问题:

SQL如何查找不在另一个结果中的特定值

刘奇
2023-03-14

TLDR;我想通过检查当前结果是否不存在于另一个结果中来筛选出结果

所以目前我有这2个查询

SELECT
  dosen.nama
FROM
  dosen AS dosen 
  INNER JOIN role as role
    ON dosen.NIP = role.NIP
WHERE
    role.Role != 'dosen'
    AND
    dosen.Nama LIKE '%em%'

导致

| nama |
| RATIH KEMALA DEWI, SP. M.Si | 
| GEMA PARASTI MINDARA, S.Si., M.Kom |

而且

SELECT 
  dosen.nama 
FROM 
  dosen AS dosen 
INNER JOIN 
  chats as chats ON dosen.NIP = chats.KonselorNIP 
WHERE 
  chats.ThreadStatus = 'OPEN'

结果(当前只有一个数据)

| nama |
| GEMA PARASTI MINDARA, S.Si., M.Kom |

就我的逻辑而言,这就是我想出的

SELECT
    dosen.nama
FROM
  dosen AS dosen 
  INNER JOIN role as role
    ON dosen.NIP = role.NIP
WHERE
    role.Role != 'dosen'
    AND
    dosen.Nama LIKE '%em%'
    AND NOT EXISTS
    ( SELECT dosen.nama FROM dosen AS dosen INNER JOIN chats as chats ON dosen.NIP = chats.KonselorNIP WHERE chats.ThreadStatus = 'OPEN')

但结果是空的,我所期待的是

| nama |
| RATIH KEMALA DEWI, SP. M.Si | 

我哪里做错了?

共有1个答案

孟安民
2023-03-14

我认为您希望不存在:

SELECT d.nama
FROM dosen AS dosen 
WHERE NOT EXISTS (SELECT 1
                  FROM role r
                  WHERE d.NIP = r.NIP AND r.Role <> 'dosen'
                 ) AND
WHERE d.Nama LIKE '%em%';
 类似资料:
  • 我有三张桌子: Person表以ID作为主键存储基本的Person明细此人可以拥有关系(父亲/母亲等),这些关系保存在Relationship表中,但是他们的用户是在Person表中创建的(例如Person表中的ID=2,3),这样我们就知道2,3与用户1(carry)相关。我们还有第三个表-地址,它存储用户ID方面的地址。(用户和他的相关人员,他们也是用户)我想知道在SQL中是否存在一个用户或他

  • 我的SQL有这些表: ___BookingsDatas ___预订 _ _ _客户 我想链接这些表,所以我有这个查询: 它实际上起作用了。 问题是在第二个表上,我有一些信息需要与第三个表链接。 例如,我需要有以下结果: 那么,在这种情况下,如何在另一个where语句中使用第一个mysql查询的结果? 谢谢。

  • 我在数据库中有两个带有绑定主键的表,我希望在它们之间找到一个不相交的集。例如 有列()和示例数据: 那么,我如何创建一个SQL查询,以便我可以从中获取没有在中的带有ID的行。在这种情况下,应该返回吗? PS:ID是这两个表的主键。

  • 问题内容: 我正在编写一个SQL查询以获取Report Builder 3.0中报表的参数列表。我需要在结果中添加一个额外的行,其值为“ All”,如下所示: 效果很好,但是查询返回的行以字母顺序排序,实际上我一直希望“全部”始终出现在顶部(即返回第一行)。其余结果可以按字母顺序排序。 我已经看到有关向表中添加排序顺序列的建议,但是我对SQL还是很陌生,并且不知道如何执行此操作。 感谢您的任何建议

  • 我需要使用用户在 Java 扫描程序中输入的内容的输入,然后确定该特定输入是否被接受为检查清单数组中是否有足够的输入的一部分。此外,int 清单数组的特定值必须与字符串项数组匹配。例如,对于商品“螺丝刀”,数量为 500。 这是一个用于家庭作业的程序,我被困在一个步骤中,我必须找出用户想要购买的商品数量。如果输入量大于int[]库存量,那么我必须让用户知道并退出程序。但是如果我有足够的库存,那么我

  • 问题内容: 我有以下两个SQL表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 任何帮助将非常感激。 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或者(由于Alterlife) 或(感谢WOPR) (如其他人所说,忽略它通常最好只选择想要的列