2016-02-18 34 views
-1

想象我有一個表:如何更新字段並將其值轉移到另一個字段?

table1 
    field1 
    field2 

我想在存儲領域1的值,並移動其當前價值爲2場在同一個查詢。

我可以這樣做嗎?

UPDATE table1 SET field2 = field1, field1 = ? 
+3

您是否嘗試過更新嗎? – jarlh

+3

你的'更新'應該可以工作。更新右側的值來自「原始」記錄。左側的值在「新」記錄中設置。 –

+0

這是一個奇怪的要求,可能是窮人(即非規範化)設計的症狀。還要注意,當在多列上執行更新時,事務的執行順序非常重要,所以'SET field3 = field2,field2 ='Z''與'SET field2 ='Z'不同,field3 = field2' – Strawberry

回答

2

我想你已經給你的問題提供了答案。你可以實現你想要通過這個查詢的內容:

UPDATE table1 SET field2 = field1, field1 = SourceofField 

SourceofField是可變的,也可從該值來源。

+0

這個答案爲什麼downvoted?我不應該用這個嗎? – Z0q

0
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 

Results

| id | field1 | field2 | 
|----|--------|--------| 
| 1 |  |  A | 
| 2 | foo |  B | 
| 3 | bar |  C | 

現在我啓動我更新的要求,這裏是結果:

| id | field1 | field2 | 
    |----|--------|--------| 
    | 1 |  X |  | 
    | 2 |  X | foo | 
    | 3 |  X | bar | 
+0

你可以給你一些回答嗎? – basgys

+0

你是什麼意思的上下文?你的意思是我需要解釋我的答案嗎? –

+0

是的,因爲Z0q好像不太瞭解SQL,所以一點點的解釋可能會有用。 – basgys

相關問題