【发布时间】:2020-01-07 16:17:49
【问题描述】:
我有一个 T-SQL 查询,我在其中使用 IN 运算符查找 GUID 在子查询结果中的所有记录。但是,我最近对架构进行了更改,因此 Table6 没有 GUID 字段,现在有一个 AlternateID 字段。因此,如果您运行 IN 运算符的子查询,它就会失败。但是,如果我作为一个整体执行查询,它总是返回 TableGUIDResolving 表中的所有记录。几乎就好像 IN 运算符对所有记录都返回 TRUE,因为子查询失败。
我已尝试修复子查询,当我这样做时它按预期执行。
有人可以帮我解释一下吗?这种行为是故意的吗?
SELECT ID
FROM TableGUIDResolving
WHERE GUID IN (SELECT AlternateID AS GUID FROM Table1
UNION
SELECT GUID FROM Table2
UNION
SELECT GUID FROM Table3
UNION
SELECT GUID FROM Table4
UNION
SELECT GUID FROM Table5
UNION
SELECT GUID FROM Table6)
【问题讨论】:
标签: sql-server subquery in-operator