SQL - 为什么我会收到 ORA-00918 错误?我定义了一个重复的列

SQL - Why am I getting an ORA-00918 Error? I defined a column that's duplicated

我正在尝试使用 Oracle LiveSQL 完成数据库编程 class 作业的练习。我定义了出现在所访问的 2 个 table 中的每一个的列。我不明白为什么会出现错误。我的代码哪里出错了?

SELECT 
    orders.customer_id,
    cust_email,
    COUNT(order_id) AS num_orders
FROM
    oe.customers
    LEFT JOIN oe.orders
        ON oe.customers.customer_id = oe.orders.customer_id
GROUP BY
    customer_id
ORDER BY
    customer_id ASC;

table 图与我们正在使用的 2 tables:

通常,出现在 SELECT 子句中的任何列也必须出现在 GROUP BY 中,除非这些列出现在聚合函数中。考虑使用此版本:

SELECT 
    c.customer_id,
    c.cust_email,
    COUNT(o.order_id) AS num_orders
FROM oe.customers c
LEFT JOIN oe.orders o
    ON c.customer_id = c.customer_id
GROUP BY
    c.customer_id,
    c.cust_email
ORDER BY
    c.customer_id;

另请注意,您遇到的另一个问题是 customer_id 是同时出现在两个 table 中的列。您需要一个别名来限定要包含的 table 的列。