はい:ユーザー定義変数 を使用します :
SET @position := 0; -- Define a variable
INSERT INTO products
SELECT id_product, id_category, name, (@position := @position + 1)
FROM db2.products
WHERE id_category = xxx;
@position
へのインクリメントの結果 挿入に使用される値です。
編集:
初期値をインラインで処理することにより、変数の宣言をスキップできます:
...
SELECT ..., (@position := ifnull(@position, 0) + 1)
...
これは、複数のコマンド(セミコロンで区切られている)を許可しないドライバーを使用してクエリを実行する場合に特に便利です。