如何在SQL Server中执行多个插入之前的一个位置
我正在SQL Server中使用插入之间的UNION ALL执行多个插入。在查询的最后一部分,我有一个WHERE子句。现在似乎WHERE子句在每条语句之前执行,但我只希望WHERE执行一次。如果WHERE子句有结果,则不应执行任何插入如何在SQL Server中执行多个插入之前的一个位置,sql,nhibernate,sql-server-2008,Sql,Nhibernate,Sql Server 2008,我正在SQL Server中使用插入之间的UNION ALL执行多个插入。在查询的最后一部分,我有一个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 EXI
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))
为了便于说明,请在表中插入一些人员,如果存在任何具有定义年龄之一的记录,则不应执行任何插入
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))
我该怎么做 试试这个:
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))