我在PostgreSQL中编写了这个查询,返回错误说:
[错误]错误:
第3行:FROM(选择DISTINCT(可识别)AS made_only_recharge
这是整个查询:
SELECT COUNT (made_only_recharge) AS made_only_recharge
FROM (
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER = '0130'
EXCEPT
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER != '0130'
)
我在Oracle中有一个类似的查询工作正常。唯一的变化是我在Oracle中EXCEPT
的位置我用MINUS
关键字替换了它。我是Postgres的新手,不知道它的要求。处理这个问题的正确方法是什么?
答案 0 :(得分:96)
在子查询上添加ALIAS
SELECT COUNT(made_only_recharge) AS made_only_recharge
FROM
(
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER = '0130'
EXCEPT
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER != '0130'
) AS derivedTable -- <<== HERE
答案 1 :(得分:1)
对于嵌套表,某些DBMS要求使用别名(如MySQL和Oracle),但其他DBMS则没有如此严格的要求,但仍允许添加它们以替代内部查询的结果。