Да:Използвайте дефинирана от потребителя променлива :
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)
...
Това може да бъде особено удобно при изпълнение на заявката с драйвер, който не позволява множество команди (разделени с точка и запетая).