2013-08-28 48 views
1

我測試了SQL的每個部分,它工作正常。如何正確編寫INSERT子查詢?

的東西是錯誤與我WHERE條款然而..沒有得到太多細節在VS 2012但是設置斷點...

如何來代碼的INSERT語句使用MS SQL Server的一個子查詢?

INSERT INTO Emails (email, insertDate) 
VALUES (@Email, @DateToday) 
WHERE NOT EXISTS (SELECT Emails.email 
        FROM Emails WHERE Emails.email = @Email); 
+0

該代碼是否編譯/運行?沒有SELECT的情況下,WHERE是什麼意思? – usr

回答

5
INSERT INTO Emails (email, insertDate) 
SELECT @Email, @DateToday 
WHERE NOT EXISTS (SELECT Emails.email 
        FROM Emails WHERE Emails.email = @Email); 
+0

非常感謝! – JoJo

2

這將工作

INSERT INTO Emails (email, insertDate) 
SELECT @Email, @DateToday 
WHERE NOT EXISTS (SELECT Emails.email 
        FROM Emails WHERE Emails.email = @Email) 

更好的解決方案可能對電子郵件列的唯一索引

2

嘗試使用類似以下內容:

"INSERT INTO Emails (email, insertDate) VALUES ('@Email', '@DateToday') WHERE NOT EXISTS (SELECT Emails.email FROM Emails WHERE Emails.email = '@Email');" 
0
INSERT INTO Emails (email, insertDate) 
SELECT Email, DateToday 
WHERE NOT EXISTS (SELECT Emails.email 
        FROM Emails WHERE Emails.email = Email) 

它將工作集email作爲非空列唯一索引