有条件 table 更新 SQL Server 2008

Conditional table update SQL Server 2008

我想更新 table 列,其中值取自相同 table 的不同列,条件是 CompletionDate='1900-01-01 00:00:00.000'

我该怎么做?

update Details 
set CompletionDate = (select FixedDate from TblRequirementDetails)
where CompletionDate = '1900-01-01 00:00:00.000'
and StatusID = '10'
GO

产生错误

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

您的子查询 returns 多个结果。您的子查询应该只给出 1 个值结果。请参阅下面的查询

UPDATE Details 
SET CompletionDate = (
SELECT 
      FixedDate 
FROM TblRequirementDetails <WHERE CLAUSE HERE THAT ENABLES YOUR QUERY TO RETURN ONLY ONE VALUE>
)
WHERE CompletionDate='1900-01-01 00:00:00.000'
AND StatusID='10

很不清楚你想select如何设置固定日期。根据您的评论,很明显您想将 CompletionDate 设置为 FixedDate 相同 table when StausID=10 for fixedDate 我假设它会给你 uniq 行.

        UPDATE Details
        SET CompletionDate = FixedDate
        WHERE
             CompletionDate='1900-01-01 00:00:00.000'
             AND StausID= '10'

我包括以确保子查询 returns 只有一行。但这是非常容易出错的方法,您需要确保第一行是您要使用的内容。


更新
正如弗洛姆评论我理解的那样,你只是想更新相同的行 Complettiondate 与那些行 FixedDate 值所以更新了查询。