我正在尝试将2个表连接到另一个表。我有这个SQL查询:
SELECT
desc_1.description,
desc_2.description,
Object.objID,
Item.itemID
FROM
Object,
Item
INNER JOIN Foo desc_1 ON desc_1.descID = Object.objDescID
INNER JOIN Foo desc_2 ON desc_2.descID = Item.itemDescID;
但是我得到以下错误:
ERROR 1054: Unkown column 'Object.objDescID' in 'on clause'
所需输出:description | description | objID | itemID |
------------+-------------+-------+--------+
"Daughter" | "Shoes" | 20 | 25 |
有人知道为什么会这样吗?列存在于表中,我已经检查了拼写等
不能将遗留的隐式连接语法和显式连接语法混合使用。使用
SELECT desc_1.description,
desc_2.description,
Object.objID,
Item.itemID
FROM Object
INNER JOIN Item on { fill in the column that relate object and item }
INNER JOIN Foo desc_1 ON desc_1.descID = Object.objDescID
INNER JOIN Foo desc_2 ON desc_2.descID = Item.itemDescID;
如果您的查询是您想要的,那么将,
替换为cross join
:
SELECT desc_1.description, desc_2.description,
Object.objID, Item.itemID
FROM Object CROSS JOIN
Item INNER JOIN
Foo desc_1
ON desc_1.descID = Object.objDescID INNER JOIN
Foo desc_2
ON desc_2.descID = Item.itemDescID;
文档甚至解释了这一点,尽管我承认它有点难以找到:
但是,逗号操作符的优先级低于INNER连接,交叉连接,左连接,等等。如果你把逗号和对于其他连接类型,当存在连接条件时,会出现错误在on子句中可能出现未知列'col_name'。信息关于如何处理这个问题,将在本节后面给出。