テーブル内の複数の行を選択し、1 つの列の値を逆にしてテーブルに再挿入しようとしています。これが私がやっていることの例です。次のデータがあるとします:
+-------+--------+-------+
| 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だけでもっとエレガントなソリューションが必要だと思っていました