MySQL命令限制混乱

时间:2017-03-07 08:15:06

标签: mysql

我今天遇到了问题。这是我的工作表:

select id,name,is_active from jobs order by `is_active` desc

结果是:

enter image description here

但是当我想获得前10条记录时,我选择了这个:

select id,name,is_active from jobs order by `is_active` desc limit 10 offset 0

结果是

enter image description here

为什么id是14到5,应该是1到10.谁可以告诉我为什么?

4 个答案:

答案 0 :(得分:2)

如果你想要更深层的订单,你必须明确要求它,否则结果将是不可预测的。因此,如果您也需要id命令,请添加它。

select id,name,is_active from jobs order by `is_active` desc, id asc limit 10 offset 0

答案 1 :(得分:1)

在MySQL中,如果没有明确指定,则顺序是任意的。您应该尝试order by id asc

答案 2 :(得分:1)

您需要在ORDER BY中使用多个列,例如:

SELECT id, name, is_active 
FROM jobs 
ORDER BY `is_active` DESC id ASC;

答案 3 :(得分:1)

如果你需要按降序保持结果,并且仍然只想要最后10个id,你应该对结果进行两次排序。

下面的查询将对结果进行升序排序,并将结果限制为10(即括号内的查询)。它仍将按升序排序,我们对此不满意,因此我们再次对其进行排序。现在我们在最后一行得到了最新的结果。

select t.id, t.name, t.is_active 
from 
    (select id, name, is_active 
     from jobs 
     order by `is_active` asc limit 10) t 

order by t.is_active desc;
相关问题