0

さて、繰り返された日付の最大値と最小値を返すクエリを作成しようとしています。したがって、特定の映画が 1982 年、1999 年、2001 年の日付で 3 回作成された場合、クエリは次のように返します。

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

組み合わせは 3 通りあるので、結果は 3 通りあります。映画が 2 回だけ作成された場合、最初の日付と最後の日付が表示されます。

Title       : Min  : Max
movietitle2 : 1960 : 2006

これは私が現在持っているクエリです。残念ながら、最小値と最大値のみを表示し、可能な3番目の値を無視します。データを要約していないため、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 に答える