2014-05-19 82 views
0

我有以下表格一些遺留的SQL語句:IF EXISTS在SQL Server CE或SQLite的替代

IF EXISTS (SELECT 1 FROM ... WHERE ...) 
AND NOT EXISTS (SELECT 1 FROM ... WHERE ...) 
AND EXISTS (SELECT 1 FROM ... WHERE ...) 
INSERT INTO ... 

有沒有辦法來改變這種查詢,使其在這兩個的SQL Server CE工作, /或SQLite和普通的SQL Server?請注意,將過程IF邏輯移出SQL不是一種選擇。

謝謝。

+1

使用連接將是可能的。但沒有一個真正的例子,沒有更多的要說。 –

回答

1

你有沒有試過把條件放在insert本身?如果您使用值語句,則需要使用insert . . . select

insert into table(col1, . . . coln) 
    select val1, . . . valn 
    where EXISTS (SELECT 1 FROM ... WHERE ...) AND 
      NOT EXISTS (SELECT 1 FROM ... WHERE ...) AND 
      EXISTS (SELECT 1 FROM ... WHERE ...); 

我不是100%肯定這將與兩個數據庫工作,沒有一個from條款。如果你沒有,你可以這樣做:

insert into table(col1, . . . coln) 
    select * 
    from (select val1, . . . valn) t 
    where EXISTS (SELECT 1 FROM ... WHERE ...) AND 
      NOT EXISTS (SELECT 1 FROM ... WHERE ...) AND 
      EXISTS (SELECT 1 FROM ... WHERE ...);