在一行SQL中更新两个不同的行

时间:2013-03-19 15:24:55

标签: mysql sql sql-update

假设我有一个名为example的表:

[abc] | [DEF]

- 1 --- | -qwerty -

- 2 --- | -asdf ---

我想要做的是在一个SQL查询中更新两列(仅使用一个UPDATE)。

UPDATE example SET def = 'foo' where abc = '1'

UPDATE example SET def = 'bar' where abc = '2'

以上是我想要实现的,但是在一行sql中(使用MySQL)。我知道你可以像UPDATE example SET def 'foo', SET def = 'bar'那样做,但我不知道你怎么能用两个不同的where语句做到这一点。

2 个答案:

答案 0 :(得分:5)

您可以使用UPDATE mysql支持)执行一个IF,或者使用CASE使其更加友好。

UPDATE  example
SET     def = IF(abc = 1, 'foo', 'bar')
WHERE   abc IN (1, 2) -- reason to make it more faster, doesn't go on all records

OR

UPDATE  example
SET     def = CASE WHEN abc = 1 THEN 'foo' ELSE 'bar' END
WHERE abc IN (1, 2) -- reason to make it more faster, doesn't go on all records

答案 1 :(得分:0)

像这样:

UPDATE example SET def = 
    CASE abc 
        WHEN '1' THEN 'foo' 
        WHEN '2' THEN 'bar'
    END

这允许您输入2个以上的案例。