sql - SQL update 语句根据日期更新可能的多行
问题描述
我正在尝试使用表 B 更新表 A 中的值,基于每个表匹配的日期,下面的示例数据。
Table A
Date Value
May-21 0
Jun-21 0
July-21 0
TABLE B
Date Value
May-21 8
Jun-21 6
July-21 7
日期是动态的,并且会随着时间而变化。有没有办法创建一个更新语句,它使用基于表 B 的值更新表 A,其中有多个日期会随时间变化。
我一直在 where 子句中对日期进行硬编码,但是这种方法我需要手动更新日期并有多个更新语句,其中每个日期都有一个语句。
有谁知道这是否可以通过单个更新语句来实现,或者在不硬编码日期的情况下更新语句。我会尝试使用合并语句,但真实表包含来自大量来源的数据,因此理想情况下需要更新语句作为更用户友好的解决方案。
期望的结果:
TABLE A
Date Value
May-21 8
Jun-21 6
July-21 7
解决方案
在标准 SQL 中,您可以将其表示为:
update a
set value = (select b.value from b where b.date = a.date)
where exists (select 1 from b where b.date = a.date);
许多数据库支持 s 中某种类型的连接update
。但是,确切的语法取决于数据库。
推荐阅读
- java - LocalDateTime 解析为纪元秒
- azure-service-fabric - 使用 Service Fabric url 调用本地 Service Fabric 无状态 API
- r - 关于总和值到特定条件的变化
- javascript - 如何检查多个输入是否具有相同类的相同值(jQuery)
- javascript - Bootstrap 导航栏折叠按钮不起作用
- javascript - 如何使 chart.js 更小?(html,chart.js)
- java - 无法写入 JSON:503 服务暂时不可用;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException
- php - PHP/MySQL 资源使用情况
- python - 在Python中增加矩阵的维数
- c# - 输入整数用户输入后继续程序c#