[英]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.