MySQL 联合更新:更新相同 a 字段的两条记录的 c 字段
MySQL 联合更新:更新相同 a 字段的两条记录的 c 字段
假设有一个表名为 table_name,包含三个字段 a、b 和 c,且 a 字段相等的记录最多只有两条。现在要将 a 字段相同的两条记录中,b=1 的记录的 c 字段内容更新到 b=2 的记录的 c 字段。
可以使用以下 SQL 语句实现:
UPDATE table_name t1
JOIN table_name t2 ON t1.a = t2.a AND t1.b = 1 AND t2.b = 2
SET t2.c = t1.c;
解释:
UPDATE table_name t1:更新table_name表,并使用别名t1。JOIN table_name t2 ON t1.a = t2.a AND t1.b = 1 AND t2.b = 2:将table_name表与自身进行自连接,使用别名t2,并根据以下条件进行匹配:t1.a = t2.a:两条记录的a字段相同。t1.b = 1:t1记录的b字段值为1。t2.b = 2:t2记录的b字段值为2。
SET t2.c = t1.c:将t1记录的c字段值更新到t2记录的c字段。
注意:
- 该语句假设
a字段相等的记录最多只有两条。如果存在超过两条a字段相同的记录,则需要调整条件语句。 - 该语句会将
b=1的记录的c字段值更新到所有b=2的记录中,如果b=2的记录存在多个,请确保更新的内容是期望的。 - 建议在执行更新语句之前先进行备份,以防意外数据丢失。
示例:
假设 table_name 表包含以下数据:
| a | b | c | |---|---|---| | 1 | 1 | 'value1' | | 1 | 2 | 'value2' | | 2 | 1 | 'value3' | | 2 | 2 | 'value4' |
执行上述 SQL 语句后,table_name 表将变为:
| a | b | c | |---|---|---| | 1 | 1 | 'value1' | | 1 | 2 | 'value1' | | 2 | 1 | 'value3' | | 2 | 2 | 'value3' |
可以看到,a=1 的两条记录中,b=2 的记录的 c 字段值被更新为 b=1 的记录的 c 字段值。
原文地址: https://www.cveoy.top/t/topic/oDp7 著作权归作者所有。请勿转载和采集!