mysql 的select的默认排序

如:select * from user where registerDate>'2006-09-04 15:32:16' limit 10

查询的结果会不会按照registerDate字段排序。

如果是,那多个条件,它又是怎么排序的。

如:select * from user where registerDate>'2006-09-04 15:32:16' and uid>8888 limit 10
是按照registerDate排序,还是按照uid排序~~

我测试了一下第一条sql是会按照registerDate字段升序的! 就是找不到权威的理论

没有Order by的时候。。或者排序的条件不是唯一的时候,是可能会出现排序随机的情况的。在oracle也是一样。。

至于没有order by的时候是怎样的?要看数据库内部是实现方案了。

[quote]select * from user where registerDate>'2006-09-04 15:32:16' limit 10 [/quote]

后台实现可能是:
先按照registerDate排序,然后做过滤;

当采用如下语句的时候:
[quote]select * from user where registerDate>'2006-09-04 15:32:16' and uid>8888 limit 10 [/quote]
由于条件不只是registerDate, 所以就不一定是按照registerDate排序了..

不过不能依赖这个东西做排序的, 还是要用Order by才是规范.

应该不会排序的,order by才是硬道理

是的,要想按照registerDate排序,至少要用order by registerDate啊,你之前看到的升序是因为数据库里面的记录可能本身就是升序排列的。
完整的sql:select * from user where registerDate>'2006-09-04 15:32:16' limit 10 order by registerDate,试一下吧!

能排序那也是假象,在某个条件下的巧合,还是ordr_by。

之所以排序了,是因为采用了先排序再取前10的算法吧
你想实现排序肯定不能依赖这种方式的