mysql - 在 MySQL 中合并两个 UPDATE 语句
问题描述
有没有办法结合以下两个语句,以便我只写一次 UPDATE 表?表的名称是 STAT_SEP。
UPDATE STAT_SEP LEFT JOIN calendar on STAT_SEP.`Period` = calendar.`Unique_Period`
SET
STAT_SEP.First_Date = calendar.First_Date;
UPDATE STAT_SEP
, (SELECT First_Date AS earliest_date FROM STAT_SEP ORDER BY First_Date ASC LIMIT 1) fancy_alias
SET `Index` = TIMESTAMPDIFF(MONTH, earliest_date, First_Date);
解决方案
您可以计算子查询中的最早日期,然后将其用于更新:
UPDATE STAT_SEP s LEFT JOIN
Calendar c
ON s.`Period` = c.`Unique_Period` CROSS JOIN
(SELECT MIN(c2.First_Date) as earliest_date
FROM STAT_SEP s2 JOIN
Calendar c2
ON s2.Period = c.unique_period
) c2
SET s.First_Date = c.First_Date,
s.Index = TIMESTAMPDIFF(MONTH, c2.earliest_date, c.First_Date);
推荐阅读
- php - 想学习/运行 PHP 单元测试但是意识到我有旧版本的 PHP
- java - 将对话框中的数据插入 Android Studio 上的 Firestore 数据库
- javascript - Firebase中foreach循环的顺序执行
- c# - 在运行时 c# 在字符串数组中添加值
- python - 在 python 中的一个脚本中生成更多图中单独的图
- c# - .NET Core 3.1 中的 LINQ JOIN
- git - git 仅获取特定的标签子集
- docker - 我有一些关于 Kubernetes 部署的问题
- excel - 将两个工作表复制到不同的工作簿中,替换当前数据
- ruby-on-rails - Nginx 将 Rails 路由作为默认页面