Mysql - 别名在左外部加入给出错误
问题描述:
我一直在看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'
答
错误是说,表peruvian_food
不包含名为idvideo
列。
如果我们试图在SELECT列表中引用分配了别名idvideo
的表达式,则在同一个SELECT内的ON
子句中不允许该引用。即使这样的参考被允许,我们也不会用peruvian_food.
表名来限定它。该表中没有名为idvideo
的列。
简单的解决方法就是重复SELECT列表中使用的表述:
ON (SUBSTRING_INDEX(SUBSTRING_INDEX(peruvian_food.embed, '/', -2), '"', 1) = ...
如果我们需要引用idvideo
别名,我们就需要使用内嵌视图,使列名来自派生表。
我们只是在猜测具体情况......我们试图实现的是什么。 (我甚至不确定是否有人提出问题;更像状态报告而不是问题,所以我们也只是猜测问什么问题。)
这是真的!为你的帮助! – Kokox