首页 > 解决方案 > 仅当该列没有不同的值时才更新表列

问题描述

SQL

如果订单的所有行都具有代码“C”,我想将“状态”列更新为已完成。

在此示例中,订单 100 的行的代码不是“C”。所以我不想更新状态。订单 200 的所有行都带有代码“C”。所以我想用状态“完成”更新所有这些行的状态。

请让我知道如何为此要求编写 SQL 查询?

标签: sql-server

解决方案


您可以使用where子句过滤掉具有非'C'值的订单:

update t
    set status = 'completed'
    where not exists (select 1
                      from t t2
                      where t2.order = t.order and
                            t2.code <> 'C'
                     );

推荐阅读