首页 > 解决方案 > SQL 语句中的 OUTER JOIN 语法错误“

问题描述

谁能帮我理解为什么这个查询不起作用?

修改查询以列出所有产品 (product) 及其关联的类别 (product_category)(如果有的话)。否则,不要显示该类别的值 (null)。

-- SQL request(s)​​​​​​‌​​‌​​​‌​‌‌‌‌​‌​​‌​​​​​‌‌ below
SELECT P.name as PRODUCT_NAME, PC.name as CATEGORY_NAME
FROM product as P
OUTER JOIN PRODUCT_CATEGORY as PC on P.product_id =  PC.product_category_id

它一直向我显示此错误:

Syntax error in SQL statement "                       
SELECT P.NAME AS PRODUCT_NAME, PC.NAME AS CATEGORY_NAME
FROM PRODUCT AS P
OUTER[*] JOIN PRODUCT_CATEGORY AS PC ON P.PRODUCT_ID =  PC.PRODUCT_CATEGORY_ID
"; SQL statement:
-- SQL request(s) below
SELECT P.name as PRODUCT_NAME, PC.name as CATEGORY_NAME
FROM product as P
OUTER JOIN PRODUCT_CATEGORY as PC on P.product_id =  PC.product_category_id
 [42000-200]

在此处输入图像描述

非常感谢

标签: mysqlsql

解决方案


OUTER JOIN在 ANSI SQL 或我使用的任何实现中不是有效的语法。

这是一个很好的参考:https ://crate.io/docs/sql-99/en/latest/chapters/30.html#joined-tables

你可以说JOININNER JOIN。这些是同义词。

你可以说LEFT JOINLEFT OUTER JOIN。这些是同义词。

你可以说RIGHT JOINRIGHT OUTER JOIN。这些是同义词。

你可以说FULL JOINFULL OUTER JOIN。这些是同义词。

你现在应该看到模式了。INNER和是可选OUTER关键字。

OUTER JOIN(没有 LEFT、RIGHT 或 FULL)不是选择之一。

我建议满足你的招聘人员,你使用LEFT OUTER JOIN.


推荐阅读