gpt4 book ai didi

PHP MySQL 组合 2 个查询

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

表格类型

id | genre     | display
---+-----------+------------
1 | Action | 1
2 | Comedy | 0
3 | Romance | 1

table 上电影

id | genre_id  | movie         | year    | display
---+-----------+---------------+---------+------------
1 | 1 | Kill Bill | 2003 | 1
2 | 1 | Die Hard | 1988 | 0
3 | 2 | Anchorman | 2004 | 1
4 | 3 | Titanic | 1997 | 1
5 | 3 | Casablanca | 1942 | 1

查询

SELECT genre.genre, movies.movie, movies.year FROM `genre` JOIN `movies` ON
genre.id = movies.genre_id WHERE genre.display = 1 AND movies.display = 1

我正在尝试编写一条 sql 语句,以便按特定顺序获得下面的结果。如果某个流派的显示值为 1,则将显示该流派本身,以及显示为 1 的任何电影。此外,流派名称不应重复:

  1. 行动

    • 杀死比尔
    • 2003
  2. 浪漫

    • 泰坦尼克号
    • 1997
    • 卡萨布兰卡
    • 1942

最佳答案

您的查询选择正确的行。我认为唯一的问题是顺序:

SELECT genre.genre, movies.movie, movies.year
FROM `genre` JOIN
`movies`
ON genre.id = movies.genre_id
WHERE genre.display = 1 AND movies.display = 1
order by genre.genre, movies.year desc;

如果你不想重复这种类型,你可以使用一个时髦的技巧。也就是说,将流派与 NULL 电影联合,然后正确排序,并记住删除之后的名称:

select (case when movie is NULL then genre else NULL end) as genre,
movie, year
from ((select genre, NULL as movie, NULL as year
from genre
where display = 1
) union all
(SELECT genre.genre, movies.movie, movies.year
FROM `genre` JOIN
`movies`
ON genre.id = movies.genre_id
WHERE genre.display = 1 AND movies.display = 1
)
) t
order by genre,
movie is null desc,
year desc

通常情况下,我会说在应用程序层执行此操作,但将 SQL 放在一起来完成这样的事情可能会很有趣。

关于PHP MySQL 组合 2 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848620/

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