Tak:użyj zmiennej zdefiniowanej przez użytkownika :
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;
Wynik inkrementacji do @position
to wartość użyta do wstawienia.
Edytuj:
Możesz pominąć deklarację zmiennej, obsługując wartość początkową w linii:
...
SELECT ..., (@position := ifnull(@position, 0) + 1)
...
Może to być szczególnie przydatne podczas wykonywania zapytania przy użyciu sterownika, który nie zezwala na wiele poleceń (oddzielonych średnikami).