我的数据库中有一张表。
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| rollno | int(11) | NO | | NULL | |
| name | varchar(20) | NO | | NULL | |
| marks | int(11) | NO | | NULL | |
+--------+-------------+------+-----+---------+----------------+
默认情况下,如果我查询
select * from students;
显示按id INT (auto-increment)
排序的结果。
+----+--------+------------+-------+
| id | rollno | name | marks |
+----+--------+------------+-------+
| 1 | 65 | John Doe | 89 |
| 2 | 62 | John Skeet | 76 |
| 3 | 33 | Mike Ross | 78 |
+----+--------+------------+-------+
3 rows in set (0.00 sec)
我想更改默认排序行为并将rollno
设为默认排序字段,我该怎么做?
答案 0 :(得分:1)
DB以尽可能最快的方式返回数据。如果这恰好是存储它的顺序或定义了一个键,那么这取决于系统。你不能依赖它。
考虑一下:如果您不需要订购,为什么DB会默认使用性能来订购。数据库针对速度进行了优化。
如果您想要它被订购,那么您必须在order by
子句中指定它。
答案 1 :(得分:0)
select * from students order by rollno asc;
将返回按该列排序的结果。应该注意的是,只要数据实际存储在数据库中(除了身份和索引之外),就没有默认的排序行为;你不应该依赖于你的结果以某种方式排序,除非你明确地对它们进行排序(使用order by
)。
答案 2 :(得分:0)
运行此
ALTER TABLE students ORDER BY rollno ASC;