簡體   English   中英

MySQL錯誤:“ on子句”中的“未知列” tablename.colname

[英]MySQL ERROR: 'Unkown column' tablename.colname in 'on clause'

我試圖將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 JOIN,CROSS JOIN,LEFT JOIN等。 如果在存在聯接條件時將逗號聯接與其他聯接類型混合使用,則可能會出現“ on子句”中形式為“未知列” col_name”的錯誤。 本節稍后將提供有關解決此問題的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM