MySQL“limit”返回错误的结果

时间:2016-12-15 13:47:11

标签: mysql sql database

我在Mysql中使用“limit”执行两个查询:

查询一个:

SELECT * FROM staff s, department d WHERE s.departId = d.id AND s.statusid = 1  LIMIT 10;

结果一: enter image description here

查询二:

SELECT * FROM staff s, department d WHERE s.departId = d.id AND s.statusid = 1  LIMIT 1;

结果二: enter image description here

问题:

我想知道为什么第二个查询不会返回id = 100000而不是id = 100001的记录; 感谢您提前回复。

3 个答案:

答案 0 :(得分:5)

是的,因为您还没有指定任何order by子句,因此无法保证返回的数据顺序。如果您需要特定的结果数据订单,那么请使用order by子句指定

order by s.departId desc

答案 1 :(得分:3)

您的任何一个查询都没有指定排序,这意味着数据库可以自由订购您的数据,但是它想要完成查询。如果您想按id列添加ORDER BY s.id ASC添加到您的查询中:

SELECT * FROM staff s, department d WHERE ... ORDER BY s.id ASC LIMIT 10;

SELECT * FROM staff s, department d WHERE ... ORDER BY s.id ASC LIMIT 1;

答案 2 :(得分:0)

使用order by id子句如果要按升序返回基于id的数据,请使用order by id desc(如果在降序中)