0

好的,所以我正在尝试编写一个查询,该查询返回已重复事物的日期的最大值和最小值。因此,如果某部电影在 1982 年、1999 年和 2001 年拍摄了 3 次,则查询将返回:

Title       : Min  : Max
movietitle1 : 1982 : 2001
movietitle1 : 1982 : 1999
movietitle1 : 1999 : 2001

因为有 3 种可能的组合,所以有 3 个结果。如果一部电影只制作了两次,那么它只是显示第一个日期和最后一个日期。

Title       : Min  : Max
movietitle2 : 1960 : 2006

这是我现在的查询,不幸的是它只显示了最小值和最大值,而忽略了任何可能的第三个值。它也不能使用 GROUP BY 因为我没有汇总数据:

SELECT name, MIN(releaseyear), MAX(releaseyear)
FROM movielist
HAVING MAX(releaseyear) != MIN(releaseyear)
4

1 回答 1

2

假设您在名为 movielist 的表中有数据,并且数据类似于:

Title       Date
movie1      1982
movie1      1999
movie1      2001

您可以尝试以下方法:

Select m1.title, m1.date min, m2.date max
From movielist m1
inner join movielist m2
on m1.title = m2.title and m1.date < m2.date

我在本地 MySQL 测试数据库上测试了以下内容:

create table movielist (TITLE VARCHAR(50), MOVIEDATE DATE )

insert into movielist values ('movie1', '2005-01-01');
insert into movielist values ('movie1', '2007-01-01');
insert into movielist values ('movie1', '2010-01-01');

insert into movielist values ('movie2', '2001-01-01');
insert into movielist values ('movie2', '2002-01-01');

insert into movielist values ('movie3', '2003-01-01');


Select m1.title, m1.moviedate min, m2.moviedate max
From movielist m1
inner join movielist m2
on m1.title = m2.title and m1.moviedate < m2.moviedate

我得到了以下结果,我相信这就是你所追求的(我使用了日期而不是字符串,但理论是一样的):

movie1  2005-01-01  2007-01-01
movie1  2005-01-01  2010-01-01
movie1  2007-01-01  2010-01-01
movie2  2001-01-01  2002-01-01
于 2013-09-11T09:41:40.443 回答