问题描述
我会直截了当,我希望我的问题是可以理解的,因为我的英语不是很好。所以,我使用 MysqL 8.0.23,我有这样的表
字段 | 类型 | 空 | 键 | 默认 | 额外 |
---|---|---|---|---|---|
id_mhs | 内部 | 没有 | PRI | NULL | 自动增量 |
名 | varchar(45) | 是 | NULL | ||
npm | 字符(8) | 是 | UNI | NULL | |
j_kelamin | enum('L','P') | 是 | NULL | ||
t_lahir | 日期 | 是 | NULL | ||
阿拉马特 | varchar(50) | 是 | NULL | ||
哥打 | varchar(45) | 是 | NULL | ||
电话 | varchar(12) | 是 | UNI | NULL | |
电子邮件 | varchar(50) | 是 | UNI | NULL |
我展示了这样的数据
id_mhs | 名 | npm |
---|---|---|
1 | AA Aditya A | 51411136 |
2 | A Aditya A | 51412371 |
3 | 迪马斯A | 51411111 |
4 | 费萨尔迪马斯 | 51411112 |
5 | 法丽达·努尔 | 51411113 |
结果是正确的,但是当我尝试这个查询时 MysqL> select id_mhs,npm from mahasiswa limit 10;
id_mhs | npm |
---|---|
28 | 51411036 |
47 | 51411054 |
83 | 51411100 |
84 | 51411101 |
85 | 51411102 |
结果按 npm 排序,而不是使用 id_mhs,当我使用按 npm 排序时的结果相同,然后我尝试删除列 npm 中的唯一约束,并使用 id_mhs 排序数据。那么,具有唯一约束和字符串数据类型的列将优先排序数据而不是主键?
解决方法
sql 表中没有“默认”顺序,您必须使用 ORDER BY 来订购您想要的东西。
好的方法是像你一样拥有一个唯一的 id 作为唯一索引(主键很好)来检索你的“默认”订单,但你必须通过“ORDER BY id”来区分