gpt4 book ai didi

MySQL - 交换连续两列的值

转载 作者:可可西里 更新时间:2023-11-01 07:22:16 25 4
gpt4 key购买 nike

我正在尝试更正存储两年的表中的一些数据:

id | start_year | end_year
---|------------|---------
1 | 2001 | 2003
2 | 2008 | 2005
3 | 2004 | 2010
4 | 2012 | NULL
5 | 2003 | 2004

就像第 2 行中的年份是错误的。如何在 start_year > end_year 的行上交换这些列的值?

注意:第 4 行不应交换,其中 end_year 为 NULL。那应该保持不变。

最佳答案

MySQL manual 中所述:

The second assignment in the following statement sets col2 to the current (updated) col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This behavior differs from standard SQL.

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

因此您不能使用简单的UPDATE 命令。相反,您可以执行自连接:

UPDATE myTable old
JOIN myTable new USING (id)
SET new.start_year = old.end_year,
new.end_year = old.start_year
WHERE old.start_year > old.end_year

关于MySQL - 交换连续两列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28897482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com