Sql server 如何在update from select语句中传递行值?
我需要一些关于简单(在PostgreSQL中很简单,但在SQLServer2008中需要)更新from select语句的帮助。我不知道如何将行中的“值”作为变量传递给from子句中的select语句。这就是我所做的Sql server 如何在update from select语句中传递行值?,sql-server,select,sql-update,Sql Server,Select,Sql Update,我需要一些关于简单(在PostgreSQL中很简单,但在SQLServer2008中需要)更新from select语句的帮助。我不知道如何将行中的“值”作为变量传递给from子句中的select语句。这就是我所做的 DECLARE @OldAnswerValue INT = 7; DECLARE @Type INT =3; SELECT A.Id as NewAnswer FROM tblEvaluationAnswers A WHERE A.AnswerValue= CASE @Ol
DECLARE @OldAnswerValue INT = 7;
DECLARE @Type INT =3;
SELECT A.Id as NewAnswer
FROM tblEvaluationAnswers A
WHERE A.AnswerValue=
CASE @OldAnswerValue
WHEN 0 THEN 1
WHEN 1 THEN 2
...
WHEN 9 THEN 5
END
AND AnswerType=@Type
我的更新看起来像
UPDATE transPersonEvaluation
SET UserAnswer=PEA.NewAnswer
FROM ( ) as PEA --here the select statement inside from
但我不知道如何将@OldAnswerValue和@Type作为参数传递到from子句中。这些值是从我正在更新的transPersonEvaluation的每一行中提取的。
在PostgreSQL中,我认为这就像
UPDATE transPersonEvaluation PE
SET UserAnswer=PEA.NewAnswer
FROM (
SELECT A.Id as NewAnswer
FROM tblEvaluationAnswers A ... where A.AnswerType=PE.AnswerType) as PEA;
但它在SQLServer2008上抛出了语法错误
任何帮助都将不胜感激,谢谢 在sql server中,您的查询如下所示
UPDATE PE
SET PE.UserAnswer=PEA.NewAnswer
FROM transPersonEvaluation PE
JOIN
(
SELECT A.Id as NewAnswer
FROM tblEvaluationAnswers A ... ) as PEA ON PEA.AnswerType = PE.AnswerType;
可能重复的