回答編集履歴

1

追記

2017/07/27 10:20

投稿

yambejp
yambejp

スコア114845

test CHANGED
@@ -7,3 +7,59 @@
7
7
  またtelとtimeが両方一致する場合はこれもidの逆順でしょうか?
8
8
 
9
9
  それともtelとtimeが両方一致するケースはないと保証されていますか?
10
+
11
+
12
+
13
+ # sample
14
+
15
+ とりあえずsample上げておきます。
16
+
17
+
18
+
19
+ - 元データ
20
+
21
+ ```
22
+
23
+ create table tbl(id int not null unique,tel varchar(20),time date,unique(tel,time));
24
+
25
+ insert into tbl(id,tel,time) values
26
+
27
+ (1,'08000001111','2017-07-01'),
28
+
29
+ (2,'08011112222','2017-07-02'),
30
+
31
+ (3,'08022223333','2017-07-03'),
32
+
33
+ (4,'08033334444','2017-07-04'),
34
+
35
+ (5,'08000001111','2017-07-05'),
36
+
37
+ (6,'08055556666','2017-07-06'),
38
+
39
+ (7,'08000001111','2017-06-30');
40
+
41
+ ```
42
+
43
+ - 抽出
44
+
45
+ ```SQL
46
+
47
+ select t4.id,t4.tel,t4.time from (
48
+
49
+ select *,(select @a:=@a+1 from (select @a:=0) as dummy) as rank from tbl as t1
50
+
51
+ where exists (select tel from tbl t2 group by tel
52
+
53
+ having t1.tel=t2.tel and t1.time=max(t2.time) )
54
+
55
+ order by time desc
56
+
57
+ ) as t3
58
+
59
+ left join tbl as t4 on t3.tel=t4.tel
60
+
61
+ order by rank,t4.time desc
62
+
63
+
64
+
65
+ ```