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

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

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

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

最佳答案

它提示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)

关于sql - 使用/USING关键字执行JOIN时,选择列表中不能有限定词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2890572/

10-12 03:15