一尘不染

在执行带有USING关键字的JOIN时,选择列表中不能包含限定词

sql

我正在看一个没有关于正确答案的解释的实践测试。我很困惑的问题基本上是问为什么以下SQL语句永远无法工作:

SELECT oi.order_id, product_jd, order_date
FROM order_items oi JOIN orders o
USING(order_id);

它给出的答案是:“由于USING子句的列部分在SELECT列表中不能有限定符,因此该语句将不会执行”

有人可以详细说明吗?我很沮丧。


阅读 397

收藏
2021-03-10

共1个答案

一尘不染

它在抱怨oi预选赛:

SELECT oi.order_id, product_jd, order_date
       ^^^

Oracle不允许将限定词与联接一起使用using。最明确的解决方法是使用常规联接:

SELECT oi.order_id, product_jd, order_date
FROM order_items oi 
JOIN orders o ON o.order_id = oi.order_id

您也可以省略限定词。该using语句告诉Oracle,即使有两个称为的字段order_id,它们都相等:

SELECT order_id, product_jd, order_date
FROM order_items oi JOIN orders o
USING(order_id)
2021-03-10