Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 server 选择vs设置,设置不工作,但选择是,为什么?_Sql Server_Tsql - Fatal编程技术网

Sql server 选择vs设置,设置不工作,但选择是,为什么?

Sql server 选择vs设置,设置不工作,但选择是,为什么?,sql-server,tsql,Sql Server,Tsql,我在SQL Server 2012中使用SET和SELECT时遇到了一个问题 使用以下SQL语句: SELECT @CellNo= Complainants.CellNo FROM Complainants INNER JOIN Complaints ON Complainants.ComplainantID = Complaints.Complainant_ID WHERE Complaints.ComplaintID = @Complai

我在SQL Server 2012中使用SET和SELECT时遇到了一个问题

使用以下SQL语句:

SELECT @CellNo= Complainants.CellNo FROM Complainants
         INNER JOIN Complaints
         ON Complainants.ComplainantID = Complaints.Complainant_ID
         WHERE Complaints.ComplaintID = @ComplaintID
SET @CellNo= Complainants.CellNo from Complainants
         INNER JOIN Complaints
         ON Complainants.ComplainantID = Complaints.Complainant_ID
         WHERE Complaints.ComplaintID = @ComplaintID
它起作用了;但当我使用以下语句时:

SELECT @CellNo= Complainants.CellNo FROM Complainants
         INNER JOIN Complaints
         ON Complainants.ComplainantID = Complaints.Complainant_ID
         WHERE Complaints.ComplaintID = @ComplaintID
SET @CellNo= Complainants.CellNo from Complainants
         INNER JOIN Complaints
         ON Complainants.ComplainantID = Complaints.Complainant_ID
         WHERE Complaints.ComplaintID = @ComplaintID
然后它就不起作用了;报告的错误为:

Error: Incorrect syntax near FROM

为什么会出现这个错误

对SET命令使用以下格式:

SET @CellNo= (Select Complainants.CellNo from Complainants
         inner join Complaints
         ON Complainants.ComplainantID = Complaints.Complainant_ID
         Where Complaints.ComplaintID = @ComplaintID)
使用以下命令:

SET @CellNo = (SELECT Complainants.CellNo
               FROM   Complainants INNER JOIN
                      Complaints ON Complainants.ComplainantID = Complaints.Complainant_ID
               WHERE  Complaints.ComplaintID = @ComplaintID)

这不是问题,这是它应该如何工作的问题。使用SET设置变量值,使用SELECT从表中选择数据。如果需要从列中读取数据,则必须使用SELECT。按照建议将set与subselect组合使用会起作用,但会添加额外的代码