换句话说,每次选择查询都会对结果进行排序,因此这两个总是会产生唯一的值:
选择*
来自bigquery-public-data.crypto_ethereum.balances
限制 10 偏移 100
选择*
来自bigquery-public-data.crypto_ethereum.balances
限制 10 OFFSET 2000
当然假设该表具有唯一值...我只是好奇如果不使用“order”子句,该表始终是确定性/连续性的,或者如果它们确实是随机返回的,结果是否可以重复? 10 倍!
最佳答案
I am just curious if without using "order" clause the table is always deterministic/consequetive or can the results duplicate if they're returned indeed at random.
没有。 SQL 表表示无序行集。行没有固有的顺序。除非指定了 order by 子句,否则不能保证同一查询的两次后续执行会产生相同的结果。数据库可以自由地按其喜欢的任何顺序返回行。
因此,带有行限制子句但没有 order by
子句的查询结果不是确定性的。 一定在这些查询中添加一个 order by
子句,否则您迟早会遇到令人惊讶且难以调试的行为。
关于sql - 大查询结果是否总是有序的,即 : using OFFSET makes sense to skip rows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61512975/