当前位置: 首页 > 面试题库 >

SQL连接:如何选择何时值不在一组值中

龙令雪
2023-03-14
问题内容

我有两个表,table1和table2。表1与表2具有一对多关系(表1中的一行映射到表2中的许多行)。table2中有一个称为代码的字段。如果table2中的代码值均不等于某些值集(例如1、2和3),那么我想选择table1中的值。我不确定如何编写这种联接。
假设table1中的主键称为id,而它映射到的外键称为。您能告诉我如何编写这种联接吗?


问题答案:

这称为反连接。

最简单的实现是:

SELECT * FROM table1
WHERE NOT EXISTS (SELECT 1 FROM table2
                  WHERE  table2.did = table1.id
                    AND  table2.code in (1,2,3))

或者,使用外部联接(我不是100%确信这会起作用,因为我自己始终将NOT EXIST语法用于反联接):

SELECT  table1.*
FROM    table1
LEFT OUTER JOIN
        table2
ON      table1.id = table2.did
  AND  table2.code in (1,2,3)
WHERE   table2.did is NULL


 类似资料:
  • 问题内容: 我有包含以下字段的表: 如何创建SQL,请选择按ID,DATE_FROM,DATE_TO对结果进行分组并从价格中选择最低的值。 所以结果是 问题答案:

  • 问题内容: 好的,通常我知道如果知道数组值(在这种情况下为1,2,3),您将执行以下操作: 但是我不知道数组的值,我只知道我要查找的值是“存储”在数组中的: 这不起作用。还有另一种方法吗? 问题答案: 使用FIND_IN_SET函数:

  • 问题内容: 基本上,我有下表: 我需要在每个列中获得唯一的条目,如以下示例所示: 到目前为止,以下代码片段几乎提供了我想要的内容,但可能会返回一些值,这在当前列中不是唯一的: 也无济于事,因为它返回唯一的行,而不是其值 编辑: 选择顺序无关紧要 问题答案: 即使使用Dimitri提到的有问题的组合,这也对我有用。我不知道这对于大音量有多快 SQLFiddle当前不适用于我,这是我的测试脚本: 输出

  • 问题内容: 我有一个Access 2010数据库,其中存储源计算机和目标计算机的IP地址。如果我的数据库中有以下条目 是否有任何查询来选择唯一对?也就是说,查询的输出应为 问题答案: 您的问题似乎暗示两件事: 列出源/目标对时,您只想查看一个方向上的对,例如(A,B),而不是(B,A)。 该列表应省略源和目标相同的对,例如(D,D) 在这种情况下,查询… …针对包含…的[SomeTable]运行时

  • 在这里json 如何使用库boost获得更新的值4? 我知道怎么取这样一个“ts”值。但是我不明白如何取两个括号的值

  • 问题内容: 我的SQL Server数据库中有两个表。第一个是,第二个是。两个表中都有一列。 现在,我想从两个表中选择一个特定的值。 这就是我在做的 但是我的查询给出了错误。 问题答案: