在sql中查找对

在sql中查找对,sql,database,sqlite,schema,Sql,Database,Sqlite,Schema,我想写一个查询,显示几年前有一部德韦恩·约翰逊的电影。例如,2003年和2004年,2004年和2005年,2005年和2006年,等等 Example Demo: Year, Year 2001, 2002 2003, 2004 2005, 2006 这是我的模式: Actor: aid INT PRIMARY KEY first VARCHAR last VARCHAR Movie: mid INT PRIMARY KEY title VARCHA

我想写一个查询,显示几年前有一部德韦恩·约翰逊的电影。例如,2003年和2004年,2004年和2005年,2005年和2006年,等等

Example Demo:
Year, Year
2001, 2002
2003, 2004
2005, 2006
这是我的模式:

Actor:
    aid INT PRIMARY KEY
    first VARCHAR
    last VARCHAR

Movie:
    mid INT PRIMARY KEY
    title VARCHAR
    year INT

Role:
    aid INT REFERENCES Actor(aid)
    mid INT REFERENCES Movie(mid)
以下是我目前的情况:

select distinct m1.year, m2.year from movie m1, movie m2
JOIN role r ON m1.mid = r.mid JOIN actor a ON r.aid = a.aid
where a.first='Dwayne' AND a.last='Johnson'

您必须两次加入
电影
角色
表才能获得所有连续的年份对

select m1.year, m2.year
from movie m1
join role r1 on r1.mid = m1.id
join actor a on r.aid = a.aid
join role r2 on r2.aid = a.aid
join movie m2 on r2.mid = m2.id
where m1.year + 1 = m2.year
and a.first='Dwayne' and a.last='Johnson'

这很接近,我以前做过类似的事情。。。唯一的问题是,我需要一个检查,以确保这几年是正确的相互后,所以我不希望1991年和1995年出现,但我希望1991年和1992年或1993年和1994年出现。。。请检查我在问题中的例子。这是我感到困惑的部分。啊,我从m1.year中减去m2.year,然后在WHERE子句中检查它是否等于1。让别人看一下会有帮助的。