2017-10-18 142 views
-1

我一直在看Stackoverflow中的例子,但沒有人給我結果,我有一個查詢,其中「選擇」有一個別名,然後我需要使用「LEFT OUTER JOIN「將其與另一個表的列進行比較,但是當我執行它時,它會生成一個未知列的錯誤,我一直在閱讀第二個JOIN,但我不知道該怎麼做。Mysql - 別名在左外部加入給出錯誤

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(embed, '/', -2), '"', 1) as idvideo, embed, thumbnail, title, 
MATCH(title, tags, category) AGAINST('peruvian food') as score 
FROM peruvian_food 
LEFT OUTER JOIN peruvian_food_del ON (peruvian_food.idvideo = peruvian_food_del.id_video_del) 
WHERE MATCH(title, tags, category) AGAINST('peruvian food' IN BOOLEAN MODE) 
AND peruvian_food_del.id_video_del IS NULL 
LIMIT 30 

我收到以下錯誤:

#1054 - Unknown column 'idvideo' in 'on clause' 

回答

1

錯誤是說,表peruvian_food不包含名爲idvideo列。

如果我們試圖在SELECT列表中引用分配了別名idvideo的表達式,則在同一個SELECT內的ON子句中不允許該引用。即使這樣的參考被允許,我們也不會用peruvian_food.表名來限定它。該表中沒有名爲idvideo的列。

簡單的解決方法就是重複SELECT列表中使用的表述:

ON (SUBSTRING_INDEX(SUBSTRING_INDEX(peruvian_food.embed, '/', -2), '"', 1) = ... 

如果我們需要引用idvideo別名,我們就需要使用內嵌視圖,使列名來自派生表。

我們只是在猜測具體情況......我們試圖實現的是什麼。 (我甚至不確定是否有人提出問題;更像狀態報告而不是問題,所以我們也只是猜測問什麼問題。)

+0

這是真的!爲你的幫助! – Kokox