gpt4 book ai didi

mysql - 如何在 MySQL 中移动整行

转载 作者:行者123 更新时间:2023-11-30 00:02:41 26 4
gpt4 key购买 nike

由于我收集了所有数据,我有一个相当大的表。我想知道现在我可以将这些数据放在表中,有时编写 MySQL 查询来更新表会更容易。我遇到的问题是,我有太多列,编写 MySQL 脚本将每行的内容向右移动是很乏味的。现在我正在做

    UPDATE customer.inmates
SET
bail = 10_percent
WHERE LEFT(10_percent, 1) = '$';

然后我再做一个来做到这一点

    UPDATE customer.inmates
SET
charge_released = bail
WHERE LEFT(bail, 1) != '$';

您现在可能会看到,如果我的表有 50 列,我将必须编写此代码的 50 个实例才能移动一行。我的问题是 - 有没有更简单的方法来做到这一点?

谢谢。

最佳答案

您可以在一次更新中进行多个字段更改,只要您将它们正确地串在一起即可,例如对于包含字段“a”到“e”的简单表:

MariaDB [test]> insert into foo values ('a', 'b', 'c', 'd', 'e');
Query OK, 1 row affected (0.00 sec)

MariaDB [test]> select * from foo;
+------+------+------+------+------+
| a | b | c | d | e |
+------+------+------+------+------+
| a | b | c | d | e |
+------+------+------+------+------+
1 row in set (0.00 sec)

MariaDB [test]> update foo set a=b, b=c, c=d, d=e, e='f';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

MariaDB [test]> select * from foo;
+------+------+------+------+------+
| a | b | c | d | e |
+------+------+------+------+------+
| b | c | d | e | f |
+------+------+------+------+------+
1 row in set (0.00 sec)

各个更新操作也是从左到右进行评估的,任何读取查询中其他发生更改的字段的操作都会获取该字段的原始值:

UPDATE foo SET a = b, b = 'bar', c = b
^---original value of b field, 'b'
^---- b-field gets new value
^--- c still gets original value of b-field:

MariaDB [test]> select * from foo;
+------+------+------+------+------+
| a | b | c | d | e |
+------+------+------+------+------+
| c | b | b | e | f |
+------+------+------+------+------+
1 row in set (0.00 sec)

您必须将所有字段写入更新查询中,但只要您按照正确的顺序进行分配,这在单个语句中绝对是可行的。

关于mysql - 如何在 MySQL 中移动整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24895580/

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