-1

假设餐桌上的水果看起来像这样:

------------------------------------------
| 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”的行与 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:这里有一个问题,但它不需要使用虚拟表,所以当表具有除id之外的唯一值时,我想看看解决方案。

谢谢

4

2 回答 2

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);
于 2013-07-03T03:36:07.410 回答
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
于 2013-07-03T03:40:43.630 回答