这是一个示例数据库:
type | name
-----------------------
B | John Doe
B | John Smith
B | Little Johnny
ZZ | Mary Jane
ZZ | Mary's Mom
X | Tom
我希望能够交换两个给定值的所有实例。为了进一步说明我的例子,让我们交换B
和X
。
type | name
-----------------------
X | John Doe
X | John Smith
X | Little Johnny
ZZ | Mary Jane
ZZ | Mary's Mom
B | Tom
这不能通过两个UPDATE命令完成,因为它最终会将所有行设置为相同的类型。
UPDATE people SET type="B" WHERE type="X"
UPDATE people SET type="X" WHERE type="B"
产生了这个不幸的结果:
type | name
-----------------------------------
X | John Doe
X | John Smith
X | Little Johnny
ZZ | Mary Jane
ZZ | Mary's Mom
X *should be B* | Tom
答案 0 :(得分:0)
您可以使用临时值。
例如:
UPDATE people SET type="asdf" WHERE type="X"
UPDATE people SET type="X" WHERE type="B"
UPDATE people SET type="B" WHERE type="asdf"
答案 1 :(得分:0)
对于此操作,您需要三个状态
UPDATE people SET type="TMP" WHERE type="X"
UPDATE people SET type="X" WHERE type="B"
UPDATE people SET type="B" WHERE type="TMP"