121

我有这个我在 PostgreSQL 中编写的查询,它返回一个错误说:

[Err] 错误:
第 3 行:FROM (SELECT DISTINCT (identifiant) 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 中有一个类似的查询,效果很好。唯一的变化是我EXCEPT在 Oracle 中用MINUS关键字替换了它。我是 Postgres 的新手,不知道它要求什么。处理这个的正确方法是什么?

4

2 回答 2

168

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
于 2013-02-08T06:50:40.693 回答
0

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

于 2020-03-26T03:13:23.913 回答