我正在尝试选择表中的多行,反转一列中的值并将它们重新插入表中。这是我正在做的一个例子,假设我有以下数据:
+-------+--------+-------+
| ORDER | X | Y |
+-------+--------+-------+
| 0 | 12 | 5 |
| 1 | 16 | 3 |
| 2 | 19 | 2 |
+-------+--------+-------+
我想选择它并将其重新插入到同一个表中,并将 ORDER 反转为:
+--------+--------+-------+
| PORDER | X | Y |
+--------+--------+-------+
| 2 | 12 | 5 |
| 1 | 16 | 3 |
| 0 | 19 | 2 |
+--------+--------+-------+
我能够复制行并重新插入它们,使用插入没问题...选择这样的:
INSERT INTO myTable (porder, x, y) SELECT porder, x, y FROM myTable
但我没有成功扭转订单。我试过了
INSERT INTO myTable (porder, x, y) SELECT (SELECT porder FROM myTable ORDER BY porder DESC), x, y FROM myTable but that throws an error
可以简单地忽略 porder 列并插入从 0 到序列中最高数字的新值(在我上面的示例中为 2),但我不知道如何在 mysql 的多行插入语句中添加序列号.
我知道如何用 php 做到这一点,但我认为必须有一个更优雅的解决方案,只用 SQL