2016-09-12 51 views
-1

我有2個更新查詢,相同的表,但不同的行和值。 由於它的同一張表,進行2次查詢是一種不專業的方式。mySQL - 如何在一個查詢中進行多更新?

UPDATE members SET age="18" WHERE nick = "John" 
UPDATE members SET height="180" WHERE nick = "Stuart" 

有沒有更好的(1查詢)方法呢?由於

回答

1

只需使用權where條款:

UPDATE members 
    SET age = 18 
WHERE nick IN ('John', 'Stuart') 

我猜測age是一個整數。我還應該指出,在數據庫中存儲「年齡」是非常罕見的 - 因爲這是一個壞主意。每一天,人們的年齡都在變化。

編輯:

UPDATE members 
    SET age = (CASE WHEN nick = 'John' THEN 18 ELSE age END), 
     height = (CASE WHEN nick = 'Stuart' THEN 180 ELSE height END) 
WHERE nick IN ('John', 'Stuart') 

我真正讀懂了問題,只更新年齡。爲此,你可以使用一個case語句:

+0

起初我想到了這個,但是他似乎想要改變john的年齡和stuart的高度 – e4c5

+0

如果我錯了,請糾正我,但那隻會更新年齡?也沒有它的年齡,我只是簡化了這個問題,實際上他們是正常的文本值。 – user3304007

+1

@ user3304007。 。 。你是對的。我真的讀了原始問題,並認爲兩個問題都在更新年齡,但這似乎是我的誤讀。 –