比较MySQL中表中相同列的属性

比较MySQL中表中相同列的属性,mysql,sql,Mysql,Sql,我有一个包含以下列的表:TitleID VARCHAR、Version BIGINT、CreatedAt DATETIME 通常不同版本的标题是按顺序出现的,但最近我开始在不按顺序出现的条目中找到它们,即 TitleID Version CreatedAt ABCDE 2 2018-06-10 20:28:37 ABCDE 1 2018-06-13 10:00:12 ABCDE 3

我有一个包含以下列的表:TitleID VARCHAR、Version BIGINT、CreatedAt DATETIME 通常不同版本的标题是按顺序出现的,但最近我开始在不按顺序出现的条目中找到它们,即

TitleID     Version      CreatedAt
ABCDE         2           2018-06-10 20:28:37
ABCDE         1           2018-06-13 10:00:12
ABCDE         3           2018-06-13 20:00:00
XYZ           2           2018-06-13 20:00:00
XYZ           1           2018-06-13 20:00:01
正如您可以看到的标题ABCDE,版本2在版本1之前,版本3在版本2之后,这是预期的。对于标题XYZ,第2版也在第1版之前。我正试图写一个查询,让我知道哪些标题以及它们的版本在过去的两周里出了问题。为此,我尝试以以下方式编写查询:

SELECT * FROM REVIEWS T1 WHERE T1.TitleID IN
    (SELECT TitleID FROM REVIEWS T2 WHERE CreatedAt > '2018-05-30'
        AND T1.CreatedAt < T2.CreatedAt AND T1.Version > T2.Version)
AND CreatedAt > '2018-05-30';

将表连接到自身,忽略版本相等的行,然后过滤版本/创建数据不一致

select 
  t1.TitleID, 
  t1.Version, 
  t1.CreatedAt, 
  t2.Version, 
  t2.CreatedAt 
from reviews t1
join reviews t2 
  on t1.TitleID = t2.TitleID and t1.Version != t2.Version
where 
  (t1.Version > t2.Version and t1.CreatedAt < t2.CreatedAt)

下面是将表连接到自身的方法,省略版本相等的行,然后过滤版本/CreatedAt不一致

select 
  t1.TitleID, 
  t1.Version, 
  t1.CreatedAt, 
  t2.Version, 
  t2.CreatedAt 
from reviews t1
join reviews t2 
  on t1.TitleID = t2.TitleID and t1.Version != t2.Version
where 
  (t1.Version > t2.Version and t1.CreatedAt < t2.CreatedAt)

这是

谢谢。加入是有意义的。还有没有办法检查t1.CreatedAt是否在t2.CreatedAt的1小时内?i、 e查看较新版本在较旧版本发布后1小时内发布的情况?谢谢。加入是有意义的。还有没有办法检查t1.CreatedAt是否在t2.CreatedAt的1小时内?i、 e查看较新版本在较旧版本发布后1小时内发布的情况?