今天,我在一個MySQL表插入行,但奇怪的事情發生,因爲具有較高的主ID,最後添加的行一些其他行之前以較低的ID其他一些行和後像這樣低ID :MySQL表列出行並不是爲了
+---------+
| user_id |
+---------+
| 1 |
| 50 |
| 69 | <=== Wrong place
| 63 |
+---------+
這是如何在phpmyadmin和我的PHP腳本中列出。我明白,如果我不定義在我的PHP腳本中以列出行的順序,但在phpmyadmin我不知道爲什麼會發生這種情況。順便說一句,這是我第一次看到這樣的事情。
這是查詢的結果:SHOW CREATE TABLE MYTABLE
CREATE TABLE `users` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'auto incrementing user_id of each user,
unique index', `web_id` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`user_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'user''s name',
`user_password_hash` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'user''s password in salted and hashed format',
`user_email` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'user''s email',
`domain` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`address` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`billing_firstname` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`billing_lastname` varchar(166) COLLATE utf8_unicode_ci NOT NULL,
`billing_phone` varchar(90) COLLATE utf8_unicode_ci NOT NULL,
`billing_country` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`git_auto_update` enum('Y','N') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
`server_id` int(16) NOT NULL,
`trial` enum('0','1') COLLATE utf8_unicode_ci NOT NULL,
`purchase_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_name` (`user_name`)
) ENGINE=MyISAM AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='user data'
驗證這一點,請運行'SHOW CREATE TABLE mytable' \ G和運行'SELECT * FROM mytable'和後兩者的輸出。 – RolandoMySQLDBA 2014-09-10 17:34:32
請閱讀[我的帖子](http://meta.stackoverflow.com/a/271056/2733506)關於如何正確提出問題......它將幫助你得到一個合適的答案 – 2014-09-10 17:34:32
也行的順序是插入表中應該沒有關係。當你運行一個SELECT語句時,只需使用ORDER BY來確保它的順序就像你已經應該做的那樣。並且PRIMARY ID應該自動遞增,不知道爲什麼你會自己指定它。 – 2014-09-10 17:36:24