sql - 大查询结果是否总是有序的,即 : using OFFSET makes sense to skip rows?

标签 sql select google-bigquery sql-order-by

换句话说,每次选择查询都会对结果进行排序,因此这两个总是会产生唯一的值:

选择* 来自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/

相关文章:

sql - 使用 NVL 显示 'none' 而不是 0

mysql - 在 SELECT 语句的其他列中使用别名

jquery - jquery中如何匹配字符串

sql - 使用 JOIN 和 LIKE 的 Rails OR 查询

mysql - 比较两列中的字符串并确保它们的子字符串不相同

mysql - 将多个 SQL 语句组合成一个

php - mySQL 选择顶级项目在一张表中拥有最多的子项?

javascript - 如何解密 BigQuery 中的列?

python - 在YYYY-MM-DD HH :MM[:SS[. SSSSSS中转换日期时间]]

google-cloud-platform - 用于云存储传输的 BigQuery 数据传输服务是否可以使用 Terraform 实现?