FROM 中的子查询必须具有别名

我在 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,不知道它要求什么。正确的处理方法是什么?

232197 次浏览

在子查询中添加一个 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

在嵌套表的情况下,一些 DBMS 需要使用 MySQL 和 Oracle 这样的别名,但是其他 DBMS 没有这样严格的要求,但是仍然允许添加它们来替换内部查询的结果。