【发布时间】:2017-03-01 03:18:52
【问题描述】:
东一个SQLINSERT INTO ... SELECT FROM ... WHERE NOT EXISTS
该子句实际检查的是什么?我希望将 col1 的结果从一个表插入到另一个表的“col1”中,它还没有在那个表中(即 col1 是主键)
INSERT INTO <table> (<col1>)
SELECT DISTINCT N.<col1>
FROM N
WHERE NOT EXISTS (
SELECT 1
FROM <table> C
WHERE
N.<col1> = C.<col1>
)
在我看来,NOT EXISTS 子句中的 SELECT 语句将返回一行(或多于一行),并且 NOT EXISTS 将查找 0 行或多于零行。
对吗?
【问题讨论】:
-
它不查找 0 行。它查找任何行。如果存在任何行,则 EXISTS 评估为真。同样,如果不存在任何行,则 NOT EXISTS 评估为真。
标签: sql-server not-exists