我在插件之间使用UNION ALL在SQL Server中进行多次插入。在查询的最后部分,我有一个WHERE子句。现在似乎WHERE子句在每个语句之前执行,但我只希望WHERE执行一次。如果WHERE子句有结果,则不应执行任何插入。
例如,将某些人插入表中,如果存在任何已定义年龄的记录,则不应执行任何插入。
INSERT INTO mytable
select 1, 33,john UNION ALL
select 2, 28,james UNION ALL
select 3, 20,Harry UNION ALL
WHERE NOT EXISTS (SELECT 1 FROM mytable where age in(22,28,30))
我该怎么做?
答案 0 :(得分:5)
请改为尝试:
INSERT INTO mytable
(id, age, name)
SELECT * FROM
(
SELECT 1 AS id, 33 AS age, 'john' AS name
UNION ALL
SELECT 2, 28, 'james'
UNION ALL
SELECT 3, 20, 'Harry'
) T1
WHERE NOT EXISTS (SELECT 1 FROM mytable WHERE age IN (22, 28, 30))