2017-05-29 46 views
0

我有如下表:更新單列SQL

我需要更新的表和列代碼中插入值。 我的代碼

UPDATE mytable 
SET code= 
    CASE id 
     WHEN 1 THEN 'ASD' 
     WHEN 2 THEN 'FGH' 
     WHEN 3 THEN 'JKL' 
     WHEN 4 THEN 'QWE' 
     WHEN 5 THEN 'BAR' 
    END 
WHERE id IN (1,2,3,4,5); 

我可以在一個單獨的查詢執行此,我必須更新14000條記錄。 謝謝!在下面的格式

+0

你已經發布了單個查詢,你想要做什麼? –

+0

它已經是單個查詢 – Vecchiasignora

+0

如果我必須更新14,000列而不是5列,我是否需要編寫一個長查詢。如果我們可以在「代碼」中插入任何值,該怎麼辦?它不需要指定。更具體一點,我們可以通過id = 1 –

回答

0

使用UPDATE查詢:

UPDATE mytable SET code = CASE WHEN id = 1 THEN 'ASD' 
           WHEN id = 2 THEN 'FGH' 
           WHEN id = 3 THEN 'JKL' 
           WHEN id = 4 THEN 'QWE' 
           WHEN id = 5 THEN 'BAR' ELSE code END 
+0

你的查詢和OP的區別是什麼? – Wanderer

+0

@Wanderer,沒有WHERE語句 –

+0

@Mansoor,壞主意......將爲id = 6的記錄設置什麼? –

0

我想這你需要什麼

UPDATE mytable 
SET code= 
CASE round(rand()*5) 
    WHEN 1 THEN 'ASD' 
    WHEN 2 THEN 'FGH' 
    WHEN 3 THEN 'JKL' 
    WHEN 4 THEN 'QWE' 
    WHEN 5 THEN 'BAR' 
    WHEN 0 THEN 'ASD' 
END 
0

創建CSV文件,列idcode。然後將該CSV導入臨時表。

查詢

create temporary table tempTable (id int, code varchar(255)); 

load data infile 'csv_file_path' into table tempTable ; 

然後使用JOIN用臨時表更新表格。

update myTable t1 
join tempTable t2 
on t1.id = t2.id 
set t1.code = t2.code; 

之後,只需刪除臨時表。

drop temporary table if exists tempTable;