![](/img/trans.png)
[英]MySQL and PHP: Unkown Column in WHERE clause, but columns do exist
[英]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.