在SQL的一个在线更新两个不同行(Update two different rows in one

2019-07-22 00:14发布

说我有一个表叫例子如下:

[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' ,但我不知道你怎么能有两个不同,语句做到这一点。

Answer 1:

您可以执行一个UPDATE配合使用的IF其中MySQL支持 ),或通过使用CASE ,使其更加RDBMS友好。

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

要么

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


Answer 2:

像这样:

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

这使您可以输入超过2例。



文章来源: Update two different rows in one line of SQL