MYSQL过滤我们彼此相邻的相同行

时间:2016-06-03 15:05:09

标签: mysql sql group-by grouping

我有这个表,类似于下面的表。 表格显示了玩家积分:

  • s 主要玩家分数
  • d 子要点;
  • 计算时
  • 日期

我希望能够过滤与 s d 相同的行。日期应该是最后一个相同的日期。

例如,在这里我们应该跳过ri - 13,因为它与ri -12相同。也跳过ri - 15,19,20,21,22,23等。但是不应该跳过第28,29,30,31行并对其进行分组。

我问,因为我的案件的GROUP BY不起作用。有什么想法吗?

表示例:

ri  date        s   d
1   2016-05-23  4   355
2   2016-05-16  4   352
3   2016-05-09  4   349
4   2016-05-02  4   352
5   2016-04-25  4   358
6   2016-04-18  4   359
7   2016-04-11  4   200
8   2016-04-04  4   201
9   2016-03-21  4   198
10  2016-03-07  4   199
11  2016-02-29  4   201
12  2016-02-22  4   203
13  2016-02-15  4   203
14  2016-02-08  4   200
15  2016-02-01  4   200
16  2016-01-18  4   201
17  2016-01-11  4   198
18  2016-01-04  4   183
19  2015-12-28  4   183
20  2015-12-21  4   183
21  2015-12-14  4   183
22  2015-12-07  4   183
23  2015-11-30  4   183
24  2015-11-23  4   182
25  2015-11-16  4   149
26  2015-11-09  4   148
27  2015-11-02  4   145
28  2015-10-26  4   109
29  2015-10-19  4   110
30  2015-10-12  4   109
31  2015-10-05  4   110
32  2015-09-28  4   106
33  2015-09-21  4   108
34  2015-09-14  4   109
35  2015-08-31  5   108
36  2015-08-24  5   108
37  2015-08-17  5   136
38  2015-08-10  5   136
39  2015-08-03  4   123
40  2015-07-27  4   122
41  2015-07-20  4   125
42  2015-07-13  4   126
43  2015-06-29  4   130
44  2015-06-22  4   128
45  2015-06-15  4   126
46  2015-06-08  4   120
47  2015-05-25  9   120
48  2015-05-18  9   122
49  2015-05-11  9   121
50  2015-05-04  9   119
51  2015-04-27  9   122
52  2015-04-20  10  124
53  2015-04-13  9   173
54  2015-04-06  9   172
55  2015-03-23  8   174
56  2015-03-09  7   89
57  2015-03-02  7   89
58  2015-02-23  7   92
59  2015-02-16  7   96
60  2015-02-09  8   93
61  2015-02-02  9   88
62  2015-01-19  4   89
63  2015-01-12  4   89
64  2015-01-05  4   94

2 个答案:

答案 0 :(得分:0)

Coulb你需要加入..

select a.*, b.* 
from my_table as a 
inner join my_table as b on a.ri  != b.ri 
where (a.d - b.d) = 0;

答案 1 :(得分:0)

可以使用not exists完成此操作。这将选择具有相同s和d的许多行中的第一行。

select *
from tablename t1
where not exists (select 1 from tablename t2 
                  where t1.ri = t2.ri+1 and t1.s = t2.s and t1.d = t2.d)