0

在mysql中,如果你这样做

select * from mytable limit m, n;

假设表没有改变(没有添加删除,但有一些更新),你会总是得到相同的行吗?例如,如果你这样做

select * from mytable limit 10000, 10000

从不同的客户/线程,你会一直得到相同的结果吗?

4

1 回答 1

1

如第 20.2 节 <直接选择语句:多行> 中所述, SQL-92 规范的“一般规则”小节:

4) 如果 <order by 子句> 没有指定,那么
   Q 的行是依赖于实现的。

我可以在 MySQL 手册中找到的关于这一点的最佳实现特定文档位于Sorting Rows下:

您可能已经注意到,在前面的示例中,结果行没有按特定顺序显示。当行以某种有意义的方式排序时,通常更容易检查查询输出。要对结果进行排序,请使用ORDER BY子句。

可以说,如果没有明确的相反文档,除非ORDER BY给出适当的明确子句,否则不能依赖 MySQL 以相同的顺序一致地返回记录(尽管根据我的经验,它始终是一致的)。

于 2012-10-14T01:37:18.343 回答