SQL 命令未正确结束尝试使用查询连接 3 个表

Posted

技术标签:

【中文标题】SQL 命令未正确结束尝试使用查询连接 3 个表【英文标题】:SQL Command not properly ended trying to join 3 tables using query 【发布时间】:2020-05-10 20:22:37 【问题描述】:

您好,我正在尝试将 Product_descriptions 表中的 Translated_Name 列添加到已连接两个表的当前查询中,但 translate_name 列是 NVARCHAR2 类型。我应该使用 Inner Join 还是我完全错了?

select order_mode,customer_id,product_id from ORDERS
       inner join ORDER_items on order_items.ORDER_ID=Orders.ORDER_ID
where exists(select customer_id from customers where orders.customer_id=customers.customer_id)
       inner join product_descriptions on product_descriptions.translated_name = Orders.Customer_id

【问题讨论】:

【参考方案1】:

where 子句在joins 之后:

select  
    order_mode,
    customer_id,
    product_id 
from orders o
inner join order_items oi 
    on oi.order_id = o.order_id
inner join product_descriptions pd 
    on pd.translated_name = o.customer_id
where exists(
    select 1
    from customers c 
    where o.customer_id = c.customer_id
)

注意事项:

表别名使查询更易于读写

您应该使用它们所属的表的别名来限定 from 子句中的列

我很怀疑product_descriptions上的join条件,涉及到customer_id;您可能需要检查一下(在不了解您的表结构的情况下,无法判断正确的条件是什么)

【讨论】:

以上是关于SQL 命令未正确结束尝试使用查询连接 3 个表的主要内容,如果未能解决你的问题,请参考以下文章

在 3 个大表上使用内连接优化 SQL 查询

sql查询问题,想找出开始时间和结束时间

来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]

使用子查询时“SQL 命令未正确结束”

SQL命令未正确结束是啥意思

SQL命令未正确结束是啥原因,去掉;也不行