我正在尝试修复查询,以使其与oracle和postgres兼容。但是同一查询在oracle中不起作用,而在postgres中不起作用。示例查询是简化的,没有实际意义,但这是一个很好的示例,用于显示我要解决的问题。
Postgres版本:11.2,oracle版本:12.1.0.2.0
“付款”表具有两列(payment_id,金额);
用户表具有一列(user_id);
查询1:
select p.amount, (select min(p.payment_id) from payments, users where p.payment_id = payments.payment_id)
from payments p, users;
postgres中的错误: 列“ p.amount”必须出现在GROUP BY子句中或在聚合函数中使用
查询2:
select (select min(p.payment_id) from payments, users where p.payment_id = payments.payment_id) from payments p, users;
postgres中的错误: 子查询使用外部查询中未分组的列“ p.payment_id”
有人知道为什么以上两个查询在oracle中有效,而在postgres中无效吗?
答案 0 :(得分:0)
确保您已正确订购付款中的数据,但这将删除重复的payment_id观察值:
选择a.user_id,a.payment_id,b.amount 来自用户 内部联接(在(payment_id)payment_id上选择不同,从付款中选择金额) 在a.payment_id = b.payment_id上 ;