假设一个表结果如下:
------------------------------------------
| id | name | color | calories |
------------------------------------------
| 1 | apple | red | 20 |
| 2 | orange | orange | 10 |
| 3 | grapes | green | 5 |
| 4 | bananas | yellow | 15 |
| 5 | plum | purple | 25 |
------------------------------------------
如何将行的值与另一行交换,使ID号保持不变?
示例:
ID为“5”的SWAP ROW,行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和表的某些值是唯一的。 注意2:在here上发布了一个问题,但它不需要使用虚拟表,因此我希望在表具有除id之外的唯一值时看到解决方案。
谢谢
答案 0 :(得分:0)
UPDATE fruit a, fruit b
SET a.color = b.color,
a.name = b.name,
a.calories = b.calories
WHERE a.id <> b.id
AND a.id in (2,5)
AND b.id in (2,5);
答案 1 :(得分:0)
以下陈述将有效。
UPDATE fruits SET id=6 where id=2
UPDATE fruits SET id=2 where id=5
UPDATE fruits SET id=5 where id=6