use*_*376 5 sql postgresql group-by
我对以下查询有疑问:
SELECT
ee.id
ee.column2
ee.column3,
ee.column4,
SUM(ee.column5)
FROM
table1 ee
LEFT JOIN table2 epc ON ee.id = epc.id
WHERE
ee.id (6050)
GROUP BY ee.id
Run Code Online (Sandbox Code Playgroud)
WHERE列ID是主键。在版本8.4上,查询返回错误,指出group by子句中不存在column2,column3和column4。
此查询在9.3版上成功执行。
有人知道为什么吗?
小智 5
这是9.1中引入的
引用发行说明:
当在 GROUP BY 子句中指定主键时,允许查询目标列表中出现非 GROUP BY 列 (Peter Eisentraut)
SQL 标准允许这种行为,并且由于有主键,结果是明确的。
在此示例中,列product_id、p.name 和p.price 必须位于GROUP BY 子句中,因为它们在查询选择列表中被引用(但请参见下文)。列 s.units 不必位于 GROUP BY 列表中,因为它仅在聚合表达式 (sum(...)) 中使用,该表达式表示产品的销售额。对于每个产品,查询返回有关该产品所有销售的汇总行。
简而言之:如果group by子句包含唯一标识行的列,则仅包含该列就足够了。
| 归档时间: |
|
| 查看次数: |
2556 次 |
| 最近记录: |