2016-09-12 79 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。 。 。你是对的。我真的读了原始问题,并认为两个问题都在更新年龄,但这似乎是我的误读。 –