如何在字段中交换更新值

时间:2012-06-03 07:26:22

标签: mysql

我猜这些two links与此问题有关,但我找不到解决我的要求的方法,这有点略有不同。

我有一张桌子,就像这样说:

fruit         color
--------------------
mango          red
apple          red
orange         yellow
banana         green

我需要UPDATE字段colorred变为yellowyellow变为red。以下是更新查询后表格的外观。

fruit         color
--------------------
mango          yellow
apple          yellow
orange         red
banana         green

这个查询显然不会起作用。

UPDATE plant SET color = 'yellow' WHERE color = 'red';
UPDATE plant SET color = 'red' WHERE color = 'yellow'

感谢。

2 个答案:

答案 0 :(得分:4)

UPDATE plant SET color = CASE color
    WHEN 'yellow' THEN 'red'
    WHEN 'red'    THEN 'yellow'
  END
WHERE color IN ('red', 'yellow')

答案 1 :(得分:1)

您可以在一个查询中执行此操作:

UPDATE plant 
SET    color = IF(color = 'yellow', 'red', IF(color = 'red', 'yellow', color))
WHERE  color IN ('red', 'yellow');