在mysql中,如果你这样做
select * from mytable limit m, n;
假设表没有改变(没有添加删除,但有一些更新),你会总是得到相同的行吗?例如,如果你这样做
select * from mytable limit 10000, 10000
从不同的客户/线程,你会一直得到相同的结果吗?
在mysql中,如果你这样做
select * from mytable limit m, n;
假设表没有改变(没有添加删除,但有一些更新),你会总是得到相同的行吗?例如,如果你这样做
select * from mytable limit 10000, 10000
从不同的客户/线程,你会一直得到相同的结果吗?
如第 20.2 节 <直接选择语句:多行> 中所述, SQL-92 规范的“一般规则”小节:
4) 如果 <order by 子句> 没有指定,那么 Q 的行是依赖于实现的。
我可以在 MySQL 手册中找到的关于这一点的最佳实现特定文档位于Sorting Rows下:
您可能已经注意到,在前面的示例中,结果行没有按特定顺序显示。当行以某种有意义的方式排序时,通常更容易检查查询输出。要对结果进行排序,请使用
ORDER BY
子句。
可以说,如果没有明确的相反文档,除非ORDER BY
给出适当的明确子句,否则不能依赖 MySQL 以相同的顺序一致地返回记录(尽管根据我的经验,它始终是一致的)。