我想选择表中的行数,颠倒一列中的值并将它们重新插入到表中。下面是我在做什么的例子,说我有以下数据:在插入... select语句中插入增量值mysql
+-------+--------+-------+
| 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
什么是错误信息?你有没有想过使用临时表? 'CREATE TABLE TMP ...'。 'INSERT INTO TMP SELECT ... myTable'。 'DROP TABLE myTable'。 'RENAME TABLE TMP to myTable'。 – Basti 2012-04-10 00:35:05