Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何正确编码插入子查询?_Sql_Sql Server - Fatal编程技术网

Sql 如何正确编码插入子查询?

Sql 如何正确编码插入子查询?,sql,sql-server,Sql,Sql Server,我测试了SQL的每个部分,结果都很好 然而,我的WHERE子句有点问题。。在VS 2012中设置断点的细节不多,但是 对于使用MS SQL SERVER的带有子查询的INSERT语句,这段代码应该是什么 INSERT INTO Emails (email, insertDate) VALUES (@Email, @DateToday) WHERE NOT EXISTS (SELECT Emails.email FROM Emails WHERE Emai

我测试了SQL的每个部分,结果都很好

然而,我的WHERE子句有点问题。。在VS 2012中设置断点的细节不多,但是

对于使用MS SQL SERVER的带有子查询的INSERT语句,这段代码应该是什么

INSERT INTO Emails (email, insertDate) 
VALUES (@Email, @DateToday) 
WHERE NOT EXISTS (SELECT Emails.email 
                  FROM Emails WHERE Emails.email = @Email);
这会奏效的

INSERT INTO Emails (email, insertDate) 
SELECT @Email, @DateToday
WHERE NOT EXISTS (SELECT Emails.email 
                  FROM Emails WHERE Emails.email = @Email)
但更好的解决方案可能是在电子邮件列上建立一个唯一的索引,这将起作用

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

但更好的解决方案可能是在电子邮件列上创建一个唯一的索引,请尝试使用以下方法:

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

请尝试使用以下方法:

"INSERT INTO Emails (email, insertDate) VALUES ('@Email', '@DateToday') WHERE NOT EXISTS (SELECT Emails.email FROM Emails WHERE Emails.email = '@Email');"
它将把电子邮件设置为非空列或唯一索引


它将电子邮件设置为非空列或唯一索引。

该代码是否编译/运行?没有SELECT的WHERE是什么意思?该代码是否编译/运行?没有选择的WHERE是什么意思?