多行中的SQL / PHP交换值

时间:2015-07-25 17:35:07

标签: php sql sqlite

这是一个示例数据库:

type | name
-----------------------
B    | John Doe
B    | John Smith
B    | Little Johnny
ZZ   | Mary Jane
ZZ   | Mary's Mom
X    | Tom

我希望能够交换两个给定值的所有实例。为了进一步说明我的例子,让我们交换BX

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

2 个答案:

答案 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"