Ras*_*sen 3 sql nhibernate sql-server-2008
我在插件之间使用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))
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
试试这个:
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))
Run Code Online (Sandbox Code Playgroud)