SQL加入错误"歧义"

时间:2015-02-05 06:36:02

标签: sql oracle

我尝试使用" JOIN "添加一个列到表中命令。但我一直有一个含糊不清的错误:

  

ORA-00918:列模糊定义

SELECT ORDER_NUM, CUSTOMER_NUM, ORDER_DATE+20 AS PROMOTION_DATE, CUSTOMER.CUSTOMER_NAME
FROM ORDERS, CUSTOMER
WHERE ORDERS.CUSTOMER_NUM = CUSTOMER.CUSTOMER_NAME;

3 个答案:

答案 0 :(得分:2)

如果2个表具有相同名称的列,则需要告诉DB要采用哪个列。您可以通过在列名称前添加表名来完成此操作。

SELECT ORDERS.ORDER_NUM,  
       CUSTOMER.CUSTOMER_NUM,
       ORDERS.ORDER_DATE+20 AS PROMOTION_DATE, 
       CUSTOMER.CUSTOMER_NAME
FROM ORDERS
JOIN CUSTOMER ON ORDERS.CUSTOMER_NUM = CUSTOMER.CUSTOMER_NAME;

答案 1 :(得分:0)

在select子句中,您将错过列CUSTOMER_NUM的表别名。

SELECT ORDER_NUM, ORDERS.CUSTOMER_NUM, ORDER_DATE+20 AS PROMOTION_DATE, CUSTOMER.CUSTOMER_NAME
FROM ORDERS, CUSTOMER
WHERE ORDERS.CUSTOMER_NUM = CUSTOMER.CUSTOMER_NAME;

答案 2 :(得分:0)

似乎列名模糊的问题。如果两个表具有相同的列名,则只需将列写为[tablename].[columnname]。如果ORDERS.CUSTOMER_NUMCustomer_NUM表的列。

,则为Orders

所以它应该是这样的:

SELECT ORDERS.ORDER_NUM, ORDERS.CUSTOMER_NUM,ORDERS.ORDER_DATE+20 AS PROMOTION_DATE,CUSTOMER.CUSTOMER_NAME
FROM ORDERS
Inner JOIN CUSTOMER
ON ORDERS.CUSTOMER_NUM = CUSTOMER.CUSTOMER_NAME