簡體   English   中英

如何在MySQL中移動整行

[英]How do I shift an entire row in MySQL

感謝我收集的所有數據,我的桌子很大。 我現在想知道的是,我可以將這些數據放在表上,有時編寫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)

您必須將所有字段都寫入更新查詢中,但是只要您以正確的順序進行分配,它肯定可以在單個語句中完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM