Mysql - 别名在左外部加入给出错误

问题描述:

我一直在看*中的例子,但没有人给我结果,我有一个查询,其中“选择”有一个别名,然后我需要使用“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' 

错误是说,表peruvian_food不包含名为idvideo列。

如果我们试图在SELECT列表中引用分配了别名idvideo的表达式,则在同一个SELECT内的ON子句中不允许该引用。即使这样的参考被允许,我们也不会用peruvian_food.表名来限定它。该表中没有名为idvideo的列。

简单的解决方法就是重复SELECT列表中使用的表述:

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

如果我们需要引用idvideo别名,我们就需要使用内嵌视图,使列名来自派生表。

我们只是在猜测具体情况......我们试图实现的是什么。 (我甚至不确定是否有人提出问题;更像状态报告而不是问题,所以我们也只是猜测问什么问题。)

+0

这是真的!为你的帮助! – Kokox