gpt4 book ai didi

mysql - 数据库 SQL 查询卡住

转载 作者:行者123 更新时间:2023-11-29 10:34:49 27 4
gpt4 key购买 nike

我正在尝试编写查询

我必须找到已租借“喜剧”电影但未租借“戏剧”电影的客户姓名。我已经编写了以下查询,但没有得到正确的结果。我认为未租用的“戏剧”部分在我的查询中不起作用。

SELECT DISTINCT CONCAT(customer.first_name,' ',customer.last_name) as Name
FROM rental
JOIN inventory ON rental.inventory_id=inventory.inventory_id
JOIN customer ON rental.customer_id=customer.customer_id
JOIN film ON film.film_id=inventory.film_id
JOIN film_category ON film_category.film_id=film.film_id
WHERE film_category.category_id=5 and
film_category.category_id<>7
ORDER by Name;

知道出了什么问题吗?

最佳答案

正如之前在其他答案中提到的,5 不是 7,但在使用 DISTINCT 时也需要小心,因为您可能有两个同名的客户,请改用 group by 子句。

处理这个问题的最佳方法是子查询、CTE 或临时表,具体取决于数据库的大小和您运行的 MySQL 版本。这些对于 MySQL 来说是最少的工作,并且应该以最快的方式返回结果集。

10 的起始是一个子查询:

SELECT CONCAT(customer.first_name,' ',customer.last_name) as Name
FROM rental
JOIN inventory ON rental.inventory_id=inventory.inventory_id
JOIN customer ON rental.customer_id=customer.customer_id
JOIN film ON film.film_id=inventory.film_id
JOIN film_category ON film_category.film_id=film.film_id
LEFT JOIN (
SELECT customer.customer_id
FROM rental
JOIN inventory ON rental.inventory_id=inventory.inventory_id
JOIN customer ON rental.customer_id=customer.customer_id
JOIN film ON film.film_id=inventory.film_id
JOIN film_category ON film_category.film_id=film.film_id
WHERE film_category.category_id=7
GROUP BY customer.customer_id
) as DRAMA
ON DRAMA.customer_id=customer.customer_id
WHERE film_category.category_id=5 AND
DRAMA.customer_id is NULL
GROUP BY customer.customer_id
ORDER by Name;

基本上,我们在这里所做的就是形成两组数据,并从 A 组中获取与 B 组不重叠的客户。

关于mysql - 数据库 SQL 查询卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46635450/

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