【发布时间】:2020-04-12 02:11:59
【问题描述】:
Postgres SELECT DISTINCT 查询是确定性的吗?
如果表(和整个数据库)不变,SELECT DISTINCT somecolumn FROM sometable 会返回相同的结果(包括顺序)吗?
在Select Query Documentation 描述部分说明:
如果指定了 ORDER BY 子句,则返回的行按指定的顺序排序。如果没有给出 ORDER BY,则以系统发现最快生成的任何顺序返回行。
他们在DISTINCT ON 子句部分添加:
请注意,每个集合的“第一行”是不可预测的,除非使用 ORDER BY 来确保所需的行首先出现。
通常,当数据库保持不变时,这仍然是正确的吗?
【问题讨论】:
-
only(实际上:only)获得确定性和稳定的行顺序的方法是
ORDER BY。也不例外。 -
既然你提到返回相同的结果(包括订单)答案是否定的,不保证结果是否相同(包括订单)用于查询的两次执行。
标签: sql postgresql select distinct deterministic