Mysql - 左外连接中的别名给出错误

时间:2017-10-18 18:53:48

标签: mysql database join left-join alias

我一直在查看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' 

1 个答案:

答案 0 :(得分:1)

错误表示表lambda不包含名为peruvian_food的列。

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

最简单的解决方法是重复SELECT列表中使用的表达式:

idvideo

如果我们需要引用ON ( SUBSTRING_INDEX(SUBSTRING_INDEX(peruvian_food.embed, '/', -2), '"', 1) = ... 别名,我们需要使用内联视图,以便列名来自派生表。

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