想象我有一個表:如何更新字段並將其值轉移到另一個字段?
table1
field1
field2
我想在存儲領域1的值,並移動其當前價值爲2場在同一個查詢。
我可以這樣做嗎?
UPDATE table1 SET field2 = field1, field1 = ?
想象我有一個表:如何更新字段並將其值轉移到另一個字段?
table1
field1
field2
我想在存儲領域1的值,並移動其當前價值爲2場在同一個查詢。
我可以這樣做嗎?
UPDATE table1 SET field2 = field1, field1 = ?
我想你已經給你的問題提供了答案。你可以實現你想要通過這個查詢的內容:
UPDATE table1 SET field2 = field1, field1 = SourceofField
SourceofField是可變的,也可從該值來源。
這個答案爲什麼downvoted?我不應該用這個嗎? – Z0q
Update Table1 as T1
LEFT JOIN Table1 as T2 ON T2.id = T1.id
SET T1.field2 = T2.field1, T1.field1 = 'X';
EDIT來解釋它: SQL Fiddle
的MySQL 5.6架構設置:
CREATE TABLE table1
(id MEDIUMINT NOT NULL AUTO_INCREMENT,
field1 CHAR(30),
field2 CHAR(30),
PRIMARY KEY (id));
INSERT INTO table1
(`field1`, `field2`)
VALUES
('','A'),
('foo','B'),
('bar','C');
查詢1:
SELECT * FROM table1
| id | field1 | field2 |
|----|--------|--------|
| 1 | | A |
| 2 | foo | B |
| 3 | bar | C |
現在我啓動我更新的要求,這裏是結果:
| id | field1 | field2 |
|----|--------|--------|
| 1 | X | |
| 2 | X | foo |
| 3 | X | bar |
您是否嘗試過更新嗎? – jarlh
你的'更新'應該可以工作。更新右側的值來自「原始」記錄。左側的值在「新」記錄中設置。 –
這是一個奇怪的要求,可能是窮人(即非規範化)設計的症狀。還要注意,當在多列上執行更新時,事務的執行順序非常重要,所以'SET field3 = field2,field2 ='Z''與'SET field2 ='Z'不同,field3 = field2' – Strawberry