Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Inkrementierender MySQL-Wert

Ja:Verwenden Sie eine benutzerdefinierte Variable :

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;

Das Ergebnis der Erhöhung auf @position ist der für die Einfügung verwendete Wert.

Bearbeiten:

Sie können die Deklaration der Variablen überspringen, indem Sie den Anfangswert inline behandeln:

...
SELECT ..., (@position := ifnull(@position, 0) + 1)
...

Dies kann besonders praktisch sein, wenn die Abfrage mit einem Treiber ausgeführt wird, der keine Mehrfachbefehle (getrennt durch Semikolons) zulässt.