gpt4 book ai didi

mysql - SQL调用所有字段

转载 作者:行者123 更新时间:2023-11-29 11:09:04 25 4
gpt4 key购买 nike

我有一个问题,我正在尝试列出数据库中每部电影的所有 Actor 。现在我有这个 SQL

    SELECT title, count(1) COUNT, actor.first_name, actor.last_name
FROM film
INNER JOIN film_actor ON film.film_id = film.actor.film_id
INNER JOIN actor ON film_actor.actor_id = actor.actor_id
GROUP BY title.

我想做的是将输出格式化为文本文件,如下所示:

Title:Number of Actors in each film: Actor first name(1): Actor last name(2) : Actor first name(2): Actor last name(2) ... ect

但例如,在第一部电影中,这部电影有十名 Actor 。我如何打印每部电影的每个 Actor 的名字和姓氏。

最佳答案

问题是您需要聚合和非聚合数据。

在 MySQL 中实现此目的的一种方法是,您必须将每部电影中的 Actor 计数作为子查询并连接回基本集。

SELECT title, b.cnt COUNT, actor.first_name, actor.last_name
FROM film
INNER JOIN film_actor
ON film.film_id = film_actor.film_id
INNER JOIN actor
ON film_actor.actor_id = actor.actor_id
INNER JOIN (SELECT film_ID, count(1) as cnt
FROM film_actor
GROUP BY film_ID) B
on film.film_ID = B.Film_ID

在支持窗口函数的数据库中,您可以使用count(1) over (partition by film.film_ID) as cnt

也可以通过使用带有 rollup 的 group by 来实现,而不需要使用添加的连接;但这会创建一个额外的行来显示总计。

SELECT title, count(1) COUNT, actor.first_name, actor.last_name
FROM film
INNER JOIN film_actor
ON film.film_id = film_actor.film_id
INNER JOIN actor
ON film_actor.actor_id = actor.actor_id
on film.film_ID = B.Film_ID
GROUP BY title with rollup

关于mysql - SQL调用所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40934065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com