假设一个表格 fruits
看起来像这样:
------------------------------------------
| id | name | color | calories |
------------------------------------------
| 1 | apple | red | 20 |
| 2 | orange | orange | 10 |
| 3 | grapes | green | 5 |
| 4 | bananas | yellow | 15 |
| 5 | plum | purple | 25 |
------------------------------------------
我如何交换一行的值,与另一行的值保持不变?
例子:
SWAP ROW WITH ID "5" WITH ROW WITH ID "2"
结果:
------------------------------------------
| id | name | color | calories |
------------------------------------------
| 1 | apple | red | 20 |
| 2 | plum | purple | 25 |
| 3 | grapes | green | 5 |
| 4 | bananas | yellow | 15 |
| 5 | orange | orange | 10 |
------------------------------------------
请注意,除了 id 之外,所有值都是完整的。 我需要使用一个非常大的值列表来执行此操作,因此我需要一个单行代码,或者最多需要一个不需要创建临时表之类的东西。
注意:id 是唯一的
谢谢
最佳答案
您可以使用连接不等式来排列要交换的行:
update fruit a
inner join fruit b on a.id <> b.id
set a.color = b.color,
a.name = b.name,
a.calories = b.calories
where a.id in (2,5) and b.id in (2,5)
关于Mysql:交换不同行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17433666/