我一直在查看Stackoverflow中的示例,但没有一个给我结果,我有一个查询,其中"选择"有一个别名,我需要使用" LEFT OUTER JOIN"将它与另一个表的列进行比较,但是当我执行它时会产生一个未知列的错误,我一直在读取需要第二个JOIN,但我不知道该怎么做。
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'
答案 0 :(得分:1)
错误表示表lambda
不包含名为peruvian_food
的列。
如果我们尝试引用分配了别名idvideo
的SELECT列表中的表达式,则在同一SELECT中的idvideo
子句中不允许该引用。即使允许这样的引用,我们也不会使用ON
表名来限定它;该表中没有名为peruvian_food.
的列。
最简单的解决方法是重复SELECT列表中使用的表达式:
idvideo
如果我们需要引用ON ( SUBSTRING_INDEX(SUBSTRING_INDEX(peruvian_food.embed, '/', -2), '"', 1) = ...
别名,我们需要使用内联视图,以便列名来自派生表。
我们只是在猜测具体情况......我们正在努力实现的目标。 (我甚至不确定是否有人提出问题;更像是状态报告而不是问题,所以我们也只是猜测问题是什么。)