首页 > 解决方案 > 从多个表中选择时,MySQL“On 子句中的未知列”

问题描述

我有以下查询:

select film.title, film_actor.film_id, count(*) as castAmount, concat(actor.first_name, ' ', 
actor.last_name) as actorFullName

from film, actor

inner join film_actor on film_actor.film_id = film.film_id 

group by film.film_id

我收到错误消息:'on Clause' 中的未知列 'film.film_id' 我已经读过它与多个连接语句有关,但很难找到能给我正确结果的解决方案。我想将 first_name 和 last_name 连接为 actorFullName,其中名字和姓氏是从“actor”表中获取的。

谢谢。

标签: mysqlsqlstringinner-joinaggregate-functions

解决方案


不要混合隐式和显式连接!一致地使用标准的显式连接。

您的查询在聚合方面也不一致。如果您希望每部电影有一行(如您当前的group by条款所示),那么您需要汇总演员姓名。

您可能正在寻找:

select f.title, f.film_id, count(*) as castAmount,
    group_concat(a.first_name, ' ', a.last_name) actor_full_names
from film_actor fa
inner join film  f on f.film_id  = fa.film_id 
inner join actor a on a.actor_id = fa.actor_id
group by f.film_id

这会为每部电影生成一行,以及演员人数和演员全名列表,以逗号分隔。


推荐阅读