Sql server 如何在update 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

我需要一些关于简单(在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 @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;
可能重复的