使用限制和偏移MYSQL对问题进行排序



我在mysql 中面临排序问题

请参阅以下查询的输出:

select astrologers.id,astrologers.name,chat_online,online,experience from `astrologers` 
where `astrologers`.`status` = '1' 
order by experience asc limit 10;
chat_online>体验0<1>0
idname在线
15Astro Anoop003
20测试Astro2003
3测试anoop005
Anoop Kumar trivedi005
7测试05
58Neeraj yadav5
萨蒂什·库马尔·古普塔
56AP Sharma1015
40VG Astrologer应用程序1055

这是MySQL中的错误吗?

否。问题是你的排序是不确定的,并且在第三个位置给出了平局:

|  3 | Test anoop          |           0 |      0 |          5 |
|  4 | Anoop Kumar trivedi |           0 |      0 |          5 |
|  7 | Test                |           0 |      0 |          5 |
| 58 | Neeraj yadav        |           1 |      0 |          5 |

所有4个用户都有相同的体验,因此让数据库来决定如何对它们进行排序。

当被要求返回到前3行时,数据库会选择前两行,然后从4个平局中选择一行。正如您开始看到的那样,在同一查询的后续执行中,您得到的结果可能不一致。

底线:了解你的数据;如果你想要一个确定性的结果,那么就使用确定性排序。例如,我们可以使用id来打破联系,从而使结果是可预测的:

order by experience, id limit 3

最新更新