gpt4 book ai didi

mysql - 以前的部分?自加盟?

转载 作者:行者123 更新时间:2023-11-29 23:15:52 24 4
gpt4 key购买 nike

我有一个包含很多电影的电影数据库。电影可以有前一部分(或下一部分)。我想运行一个查询,显示包含所有之前的电影和所有接下来的电影的列表。该表包含以下列:movie_id|title|previous_part(即上一部分的电影 id)|publication_year

这是我现在拥有的,但它不起作用

SELECT TOP 1 e1.movie_id, e1.title, e1.previous_part
FROM dbo_Movie AS e1 INNER JOIN dbo_Movie AS e2 ON e1.movie_id = e2.previous_part
ORDER BY e1.publication_year;

e1.movi​​e_id 是电影的一个随机部分的参数。

提前致谢!

最佳答案

您能否澄清以下问题:

1) 有多少部电影 1000/100,000/10,000,000 (例如个人收藏、小型应用程序、全局图书馆)2) 您正在查看多少部分?您希望如何呈现数据?

从逻辑上讲,如果有合理数量的有限部分(少于 10 个),您可以创建一些笨拙的 sql 构造来列出所有先前的部分和 future 的部分。但是,如果您正好在前一个(如果存在)和下一个(如果存在)之后,您可以尝试:

解决方案 1:(列出所有电影部分以及上一个和下一个部分(如果存在)

select e1.movie_id, e1.title, pp.movie_id as prev_movie_id,  np.movie_id as next_movie_id
from dbo_Movie AS e1
left join dbo_Movie AS pp
ON e1.previous_part = pp.movie_id
left join dbo_Movie AS np
ON np.previous_part = e1.movie_id

预期输出:

movie_id | title | prev_movie_id | next_movie_id
m1p2 | zed | m1p1 | m1p3
m1p3 | zed | m1p2 | null
m1p1 | zed | null | m1p2
m2p1 | phi | null | null
m3p1 | quo | null | m3p2
m3p2 | quo | m3p1 | null

解决方案 2.1:列出所有电影部分以及上一个下一个部分

select e1.movie_id, e1.title, np.movie_id as next_movie_id
from dbo_Movie AS e1
inner join dbo_Movie AS np
ON np.previous_part = e1.movie_id
--inner join means anything rows where this isn't true will be removed

预期输出:

movie_id | title | next_movie_id
m1p2 | zed | m1p3
m1p1 | zed | m1p2
m3p1 | quo | m3p2

解决方案 2.2:列出所有电影部分以及上一个下一个部分

select e1.movie_id, e1.title, pp.movie_id as prev_movie_id
from dbo_Movie AS e1
inner join dbo_Movie AS pp
ON e1.previous_part = pp.movie_id

预期输出:

movie_id | title | prev_movie_id 
m1p2 | zed | m1p1
m1p3 | zed | m1p2
m3p2 | quo | m3p1

注释:

1) 空值没有得到干净的处理,而 prev_movie_id 和 next_movie_id 都可以。

2) 显然,SQL:1999 中没有限制结果的 ANSI sql 标准,但 bobince 在回复中提到的后来的标准中有:Is there an ANSI SQL alternative to the MYSQL LIMIT keyword?

关于mysql - 以前的部分?自加盟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27816271/

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