84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
数据本来是这样的然后使用SELECT company_id,company_name,tel FROM table LIMIT 5;
SELECT company_id,company_name,tel FROM table LIMIT 5;
显示如下
然后问题就来了,使用SELECT comapny_id,company_name FROM table LIMIT 5;
SELECT comapny_id,company_name FROM table LIMIT 5;
为什么少使用了一列就会导致数据乱序输出呢?
走同样的路,发现不同的人生
测试了下, 当table 有 PRIMARY KEY 的时候根据PRIMARY KEY 来排序,如果没有,则根据TABLE_INDEX 来排序,楼主方便贴一下SHOW INDEX FROM table 结果吗?不过建议使用 ORDER BY xx LIMIT xx 根据ORDER BY 后面的指定字段排序,一目了然,简洁易懂。
PRIMARY KEY
TABLE_INDEX
SHOW INDEX FROM table
ORDER BY xx LIMIT xx
ORDER BY
explain下这2个SQL语句,看看type和key值是不是不一样。猜想应该是根据查询的列使用了不同的排序方式(可能是mysql自己判断的最优的排序方式)。所以最好能够加上order by。避免查到重复的数据,题主可以试下你2条sql语句查询字段再少一个查询看看,排序结果可能又会不一样。针对题主分页的情况还是加上order by吧。一般分页都是加上order by的。
你又没有指定排序的列,必须order by 字段才有意义,否则的话当然是随便给几条啦。
explain SELECT comapny_id,company_name FROM table LIMIT 5;
看看 使用的索引情况 可能根据索引排序了
没有主键又没有指定排序的话就是乱的;有主键的话会默认主键排序,没有主键你要数据不乱的话就要指定排序字段
测试了下, 当table 有
PRIMARY KEY
的时候根据PRIMARY KEY
来排序,如果没有,则根据TABLE_INDEX
来排序,楼主方便贴一下SHOW INDEX FROM table
结果吗?不过建议使用ORDER BY xx LIMIT xx
根据ORDER BY
后面的指定字段排序,一目了然,简洁易懂。explain下这2个SQL语句,看看type和key值是不是不一样。猜想应该是根据查询的列使用了不同的排序方式(可能是mysql自己判断的最优的排序方式)。所以最好能够加上order by。避免查到重复的数据,题主可以试下你2条sql语句查询字段再少一个查询看看,排序结果可能又会不一样。针对题主分页的情况还是加上order by吧。一般分页都是加上order by的。
你又没有指定排序的列,必须order by 字段才有意义,否则的话当然是随便给几条啦。
看看 使用的索引情况
可能根据索引排序了
没有主键又没有指定排序的话就是乱的;有主键的话会默认主键排序,没有主键你要数据不乱的话就要指定排序字段