繁体   English   中英

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

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

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

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;

我们使用的 2 个表的表图: 在此处输入图像描述

通常,出现在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是同时出现在两个表中的列。 您需要一个别名来限定要包括哪个表的列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM