假设我有一个名为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语句来做到这一点。
UPDATE example SET def 'foo', SET def = 'bar'
您可以UPDATE使用IF( mysql支持 )或通过CASE使RDBMS更加友好来执行一个。
UPDATE
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
或者
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