sql-server - 仅当该列没有不同的值时才更新表列
问题描述
如果订单的所有行都具有代码“C”,我想将“状态”列更新为已完成。
在此示例中,订单 100 的行的代码不是“C”。所以我不想更新状态。订单 200 的所有行都带有代码“C”。所以我想用状态“完成”更新所有这些行的状态。
请让我知道如何为此要求编写 SQL 查询?
解决方案
您可以使用where
子句过滤掉具有非'C'
值的订单:
update t
set status = 'completed'
where not exists (select 1
from t t2
where t2.order = t.order and
t2.code <> 'C'
);
推荐阅读
- c++ - 如何在 QT 中将大量 C 文件导入到我的项目中?
- python - 在 python 中定义一个回调协议,作为任何符合以下模式的函数的结构超类型
- r - getDescriptionStatsBy 仅在因子少于三个级别时显示一个级别
- nlp - 按个人从消息/对话中提取常用/典型短语
- sql - 在 SQL 中计数时如何分隔列?
- r - DiagrammeR - Digraph 流程图 - 箭头上标签的位置和方向
- google-cloud-platform - 如何在 Vertex AI 中安排自定义训练作业的重复运行
- deep-learning - 如何从头开始构建“ner_ontonotes_bert_mult”模型
- ios - 核心数据检索问题
- angular - Angular 2 Lifecycle Hooks、变更检测和 ngZone