繁体   English   中英

条件表更新SQL Server 2008

[英]Conditional table update SQL Server 2008

我想更新表列,其中值取自同一表的不同列,条件为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

产生错误

子查询返回的值超过1。 当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。

您尚不清楚如何选择固定日期进行设置。 通过您的意见很清楚,你要设置的CompletionDateFixedDate同桌时StausID=10为fixedDate和我假设它会给你的uniq行。

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

我包括确保子查询仅返回一行。 但是,这很容易出错,因此您需要确保“前1行”是您要使用的行。


UPDATE
作为fromm注释,我了解到您只想用该行FixedDate值更新相同的行Complettiondate ,因此更新了查询。

您的子查询返回许多结果。 您的子查询应仅给出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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM