Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql表列出了不按顺序排列的行_Mysql_Phpmyadmin - Fatal编程技术网

Mysql表列出了不按顺序排列的行

Mysql表列出了不按顺序排列的行,mysql,phpmyadmin,Mysql,Phpmyadmin,今天我在mysql表中插入了一行,但发生了一些奇怪的事情,因为最后添加的主id较高的行位于其他id较低的行之前,而在其他id较低的行之后,如下所示: +---------+ | user_id | +---------+ | 1 | | 50 | | 69 | <=== Wrong place | 63 | +---------+ 这只是一个猜测,但现在它来了 您的桌子布局是 CREATE TABLE `users` ( `user_id

今天我在mysql表中插入了一行,但发生了一些奇怪的事情,因为最后添加的主id较高的行位于其他id较低的行之前,而在其他id较低的行之后,如下所示:

+---------+
| user_id |
+---------+
|   1     |
|   50    |
|   69    | <=== Wrong place
|   63    |
+---------+

这只是一个猜测,但现在它来了

您的桌子布局是

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'
我的直觉告诉我,
user\u id
值是按
user\u name
顺序出现的。当同时存在主键和唯一键时,有时会发生这种情况。您可以通过运行

SELECT user_id,user_name FROM users;
SELECT user_id,user_name FROM users ORDER BY user_id;
SELECT user_id,user_name FROM users ORDER BY user_name;

比较输出

请运行
显示创建表mytable
\G并运行
从mytable中选择*并发布两者的输出。请阅读如何正确提问。。。这将帮助您获得适当的答案。行在表中插入的顺序也不重要。运行SELECT语句时,只需使用ORDERBY来确保其顺序与您应该执行的相同。主id应该是自动递增的,但不知道为什么要自己指定它。@RolandmySqlDBA请查看问题中“显示创建表”的结果thnx@JohnRuddell虽然这不是一种恐慌的情况,但当我看到这一点时,我感到困惑,所以我很快就写下了我的问题。是的,这就是我的想法,但我改变了用户名为非唯一密钥,但问题仍然没有解决。我将进一步测试它以了解问题所在。我尝试从用户中选择web\u id,输出结果与我的问题相同,因此我猜问题出在web\u id上
SELECT user_id,user_name FROM users;
SELECT user_id,user_name FROM users ORDER BY user_id;
SELECT user_id,user_name FROM users ORDER BY user_name;