2016-02-10 27 views
0

我想知道如何讓MySQL自動創建一個列,每行增加1(第1行將有ID 1,第2行將得到ID 2等) 例如:
每當新用戶在網站上註冊時,他們都會被分配一個ID號碼。從1開始,然後是2等
MySQL自動ID列

ID |用戶名|密碼
1 |鮑勃| drowssaP
2 |吉爾|貓

回答

0

嘗試AUTO_INCREMENT。 Documentation here

如果添加,那魔字:)你創建表的聲明,它會爲你做魔術:)

mysql> CREATE TABLE Users (
    -> ID int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> Username varchar(255) NOT NULL, 
    -> Password varchar(255) NOT NULL 
    ->); 
    Query OK, 0 rows affected (0.52 sec) 

mysql> INSERT INTO Users(Username, Password) VALUES('vladimir', 'ilich_lenin'); 
    Query OK, 1 row affected (0.12 sec) 

mysql> INSERT INTO Users(Username, Password) VALUES('friedrich', 'engels'); 
    Query OK, 1 row affected (0.04 sec) 

mysql> SELECT * FROM Users; 
+----+-----------+-------------+ 
| ID | Username | Password | 
+----+-----------+-------------+ 
| 1 | vladimir | ilich_lenin | 
| 2 | friedrich | engels  | 
+----+-----------+-------------+ 
2 rows in set (0.02 sec) 

編輯

mysql> CREATE TABLE Persons (ID int NOT NULL PRIMARY KEY, Username varchar(255) NOT NULL, Password varchar(255) NOT NULL); 
Query OK, 0 rows affected (0.25 sec) 

mysql> SHOW CREATE TABLE 

    CREATE TABLE `Persons` (
    `ID` int(11) NOT NULL, 
    `Username` varchar(255) NOT NULL, 
    `Password` varchar(255) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

1 row in set (0.00 sec) 

mysql> ALTER TABLE Persons MODIFY ID INTEGER NOT NULL AUTO_INCREMENT; 
Query OK, 0 rows affected (0.50 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

mysql> SHOW CREATE TABLE Persons; 
CREATE TABLE `Persons` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `Username` varchar(255) NOT NULL, 
    `Password` varchar(255) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

1 row in set (0.00 sec) 

mysql> INSERT INTO Persons(Username, Password) VALUES('friedrich', 'engels'); 
Query OK, 1 row affected (0.06 sec) 

mysql> INSERT INTO Persons(Username, Password) VALUES('karl', 'marx'); 
Query OK, 1 row affected (0.08 sec) 

mysql> SELECT * FROM Persons 
    -> ; 
+----+-----------+----------+ 
| ID | Username | Password | 
+----+-----------+----------+ 
| 1 | friedrich | engels | 
| 2 | karl  | marx  | 
+----+-----------+----------+ 
2 rows in set (0.00 sec) 
+0

謝謝,我其實已經有一個名爲「請求」的現有表,它有更多的行,我已經有一個ID列,我已經分配了索引角色。你有什麼建議嗎? –

+0

顯示你的數據庫結構,如果不是那麼祕密。只需執行'SHOW CREATE TABLE yourtablename;'並在這裏粘貼結果。 – marmeladze

+0

它包含很多用戶密碼作爲MD5的,所以我不想在這裏發佈,但我會告訴你的結構。 ID |歌曲|名稱|專用|時間 很顯然,我想讓ID列自動給出ID –