テーブル内のいくつかの行を選択しようとしていますが、1つの列の値を逆にしてテーブルに挿入し直しています。挿入のインクリメンタル値を挿入するselectステートメントmysql
+--------+--------+-------+
| PORDER | X | Y |
+--------+--------+-------+
| 2 | 12 | 5 |
| 1 | 16 | 3 |
| 0 | 19 | 2 |
+--------+--------+-------+
:私はそれを選択し、なるように逆の順序で同じテーブルにそれを再挿入したい
+-------+--------+-------+
| ORDER | X | Y |
+-------+--------+-------+
| 0 | 12 | 5 |
| 1 | 16 | 3 |
| 2 | 19 | 2 |
+-------+--------+-------+
:ここで私がやっているものの例があり、私は次のようなデータを持っていると言います私はこのような行を複製し、インサートを使用して、何の問題を再挿入...選択することができる午前:
INSERT INTO myTable (porder, x, y) SELECT porder, x, y FROM myTable
が、私は順序を逆に何も成功していませんでした。私は、単にPORDER列を無視して、0から順に最も多く(私の上記の例では2)に新しい値を挿入するにはいいと思い
INSERT INTO myTable (porder, x, y) SELECT (SELECT porder FROM myTable ORDER BY porder DESC), x, y FROM myTable but that throws an error
を試してみましたが、私はシーケンシャルを追加する方法がわかりませんmysqlの複数行のinsert文の数字。
(max(order) = 2
を想定して)私はPHPでこれを行う方法を知っているが、私はあなたがorder
の最大値を知っていれば、あなたは、単に行うことができますちょうどSQL
エラーメッセージは何ですか?一時テーブルの使用について考えましたか? 'CREATE TABLE TMP ...'。 'INSERT INTO TMP SELECT ... myTable'です。 'DROP TABLE myTable'。 'RENAME TABLE TMP to myTable'。 – Basti