|
|
1
1
每个人都有一个正确的想法
亚历山大在我看来更正确,因为我们正在寻找一个 ANTI SEMI JOIN ; 一 左 反半加入,具体来说,以您的“某处”员工ID列表作为 左边 表和邮件列表作为 正当 桌子 反连接返回中存在的记录 这 中不存在的集合 那个 设置通过集合,我指的是表、视图、子查询等。通过“this”集合,我指的是左表,通过“that”集合,我指的是右表。半连接仅在 一 返回左表中的匹配行。换句话说,半连接返回 不同的 设置 使用提供的样本数据。比如说,通过“某处”,你指的是一张桌子。(我将数字5包括两次,以演示和反连接与反半连接之间的区别)
您可以使用
请注意,每个函数都会返回数字5两次。如果您只需要它一次,您可以使用它来执行类似的反半连接:
除了是一个
如果“某处”指的是逗号分隔的列表或XML或JSON文件/片段,那么首先需要将该列表、XML、JSON或任何内容转换到左边的表中。使用SQL Server 2016
.. 或者,如果是XML,则有一个选项如下所示:
最后一点您需要在邮件列表表中建立EmployeeId索引。在我的示例中,您需要dbo上的索引。也在某处。如果您正在进行半连接,那么您希望这些索引是唯一的。 |
|
|
2
1
您可以使用 EXCEPT 命令 例子:
|
|
3
1
你似乎并不是在问逻辑,而是在问如何“最好地”表现集合
正如你提到的,一个答案是一个临时表。
另一个是子查询或具有一系列
另一种是使用
但这里有一个突出的点。如果你有一张桌子
编辑:
至于实际逻辑,一旦你的集合代表了你的5名员工,你可以使用
=>经理为#666但不在邮寄名单上的员工为#789 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |