3

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

[ABC] | [定义]

--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 语句来做到这一点。

4

2 回答 2

5

您可以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
于 2013-03-19T15:27:00.107 回答
0

像这样:

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

这允许您输入超过 2 个案例。

于 2013-03-19T15:29:05.950 回答