事件表:
id user type creation_date update_date
1 A AAA 1111 3333
2 A BBB 2222 4444
3 A CCC 3333 5555
4 A DDD 4444 6666
5 B AAA 3333 4444
6 B BBB 4444 5555
7 B CCC 5555 6666
8 C AAA 2222 3333
9 C BBB 1111 7777
10 C CCC 3333 4444
11 C DDD 4444 9999
任务:
查找所有至少有一个 DDD 事件并且该用户在 creation_date 之前的最新非 DDD 事件与在 update_date 之前的最新非 DDD 事件不同的所有用户。
所以对于上面的记录:
用户 A 有一个 DDD 事件。好的。但是最后创建的非 DDD 事件和最后更新的非 DDD 事件是相同的(事件 #3)。因此从结果集中排除。
用户 B 没有 DDD 事件。因此从结果集中排除。
用户 C 有一个 DDD 事件。最后创建的非 DDD 事件(#10)与最后更新的非 DDD 事件(#9)不同。所以包含在结果集中。
结果集:
user
C
我尝试了不同的东西,包括 GROUP BY 和 EXISTS。但是我很难对每组记录进行排序。
任何想法?