2013-03-19 64 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例。