2013-03-19 60 views
3

假设我有一个名为example的表格:在SQL的一行中更新两行不同行

[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'这样做,但我不确定你如何用两种不同的语句来做到这一点。

回答

5

您可以使用IF其MySQL支持)或使用CASE,使之更加友好的RDBMS执行一个UPDATE

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 
+0

非常感谢:) – nsilva 2013-03-19 15:48:50

+0

不客气':D' – 2013-03-19 15:49:05

0

像这样:

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

这可以让你输入超过2例。