小编典典

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

sql

假设我有一个名为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语句来做到这一点。


阅读 211

收藏
2021-04-14

共1个答案

小编典典

您可以UPDATE使用IFmysql支持 )或通过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
2021-04-14