回答編集履歴

1

追記

2018/12/18 01:48

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -15,3 +15,71 @@
15
15
 
16
16
 
17
17
  のどちらかが必要になります
18
+
19
+
20
+
21
+ # 追記
22
+
23
+
24
+
25
+ ちなみにnickNameIDと優先順位が同じだったときはnoの小さいものを選ぶとこうです
26
+
27
+
28
+
29
+ - 元データ
30
+
31
+ ```SQL
32
+
33
+ create table tbl(ID int primary key,nicknameID int,priority int);
34
+
35
+ insert into tbl values
36
+
37
+ (1,20,1),
38
+
39
+ (2,20,2),
40
+
41
+ (3,20,3),
42
+
43
+ (4,21,2),
44
+
45
+ (5,21,3),
46
+
47
+ (6,23,2),
48
+
49
+ (7,24,1),
50
+
51
+ (8,24,1),
52
+
53
+ (9,24,4),
54
+
55
+ (10,25,3),
56
+
57
+ (11,25,3),
58
+
59
+ (12,25,4),
60
+
61
+ (13,25,4),
62
+
63
+ (14,26,2),
64
+
65
+ (15,26,3),
66
+
67
+ (16,26,4),
68
+
69
+ (17,26,4),
70
+
71
+ (18,26,4);
72
+
73
+ ```
74
+
75
+
76
+
77
+ - 抽出
78
+
79
+ ```SQL
80
+
81
+ select * from tbl as t1
82
+
83
+ where not exists(select 1 from tbl as t2 where t1.nicknameID=t2.nicknameID and (t1.priority>t2.priority or (t1.priority=t2.priority and t1.ID>t2.ID)))
84
+
85
+ ```