Gaj*_*mar 5 sql oracle postgresql
下面是在 Oracle 上运行但在 PostgreSQL 上不起作用的 Sql 查询。
select count(*) from users where id>1 order by username;
Run Code Online (Sandbox Code Playgroud)
我知道 order by 在此查询中没有任何意义,但仍然是它在 Oracle 上工作的原因。以下是 PostgreSQL 上的错误
ERROR: column "users.username" must appear in the GROUP BY clause or be used in an aggregate function
Position: 48
Run Code Online (Sandbox Code Playgroud)
SQL状态:42803
PostgreSQL 版本 9.6.3
从Oracle的执行计划中可以看出,行聚合后没有排序,这表明Oracle实现的SQL引擎忽略了该短语。
为什么它在 PostgreSQL 中不起作用——因为运行 Postgres 的人知道他们在做什么;) 开玩笑,但在没有看到 Oracle 与 MySQL 源代码的情况下,这个问题对我来说是高度推测性的。更大的问题是 Oracle 和 MySQL 是否巧合允许这样做,或者因为 Oracle 拥有两者。
最后一点:如果您想问为什么类似的软件应用程序的行为不同,我认为包括您所指的版本也很重要。即使同一应用程序的不同版本也可能遵循不同的说明。
| 归档时间: |
|
| 查看次数: |
2897 次 |
| 最近记录: |