2016-07-17 8 views
0

Gibt es eine MySQL-Abfrage, um eine Tabelle zu aktualisieren und Zahlen von 1 beginnend? Zum Beispiel hat die Tabelle "Artikel" 100000 Zeilen, die Abfrage würde nur die erste Zeile aktualisieren und setzen ID = "1", neben 2, 3, 4 etc.Auto numerieren MySQL Query

+0

Da Sie wollen die 'column' aktualisieren? besser den Tabellenstrukturcode buchen. – 1000111

Antwort

0

hinzufügen Auto Increment-Spalte (INT) und es sollte das tun, was Sie

+0

Aber er wird bestehende Zeilen nicht aktualisieren. –

+0

Sie können Zeile existieren und umbenennen neu in den Namen von alt. Wenn Sie möchten, können Sie es am Anfang verschieben, Indizes hinzufügen usw – AucT

1

versuchen:

ALTER TABLE item MODIFY id INT PRIMARY KEY NOT NULL AUTO_INCREMENT 

Wenn Sie ID in Ihrem Artikel Tisch. Aber es wird Fehler in ID-Spalte mit doppelten Werten angezeigt.

0

Gibt es bereits einen Primärschlüssel in der Tabelle? Wenn nicht, dann erstellen Sie einen mit AUTO_INCREMENT.

Dies würde die Arbeit erledigt haben.

ALTER TABLE `your_table` 
ADD COLUMN `id_primary` int NOT NULL AUTO_INCREMENT FIRST , 
ADD PRIMARY KEY (`id_primary`); 

Hinweis: Ändern einer vorhandenen Spalte zu primary key AUTO_INCREMENT würde Fehler auslösen, wenn diese Spalte doppelte Werte enthält.

0

diese

MariaDB [sandbox]> select * from posts; 
+------+--------+----------+ 
| id | userid | category | 
+------+--------+----------+ 
| NULL |  1 | a  | 
| NULL |  1 | b  | 
| NULL |  1 | c  | 
| NULL |  2 | a  | 
| NULL |  1 | a  | 
+------+--------+----------+ 
5 rows in set (0.00 sec) 

Dieser Code

use sandbox; 
update posts p,(select @rn:=0) rn 
set   id=(@rn:[email protected]+1) 
where 1 = 1; 

Ergebnisse in

MariaDB [sandbox]> select * from posts; 
+------+--------+----------+ 
| id | userid | category | 
+------+--------+----------+ 
| 1 |  1 | a  | 
| 2 |  1 | b  | 
| 3 |  1 | c  | 
| 4 |  2 | a  | 
| 5 |  1 | a  | 
+------+--------+----------+ 
5 rows in set (0.00 sec)