質問するログイン新規登録

回答編集履歴

1

追記

2018/12/18 01:48

投稿

yambejp
yambejp

スコア118161

answer CHANGED
@@ -6,4 +6,38 @@
6
6
  - ニックネームの重複回避をとるか
7
7
  - 同じだったときにどちらかのIDが優先されるようなロジックを提示
8
8
 
9
- のどちらかが必要になります
9
+ のどちらかが必要になります
10
+
11
+ # 追記
12
+
13
+ ちなみにnickNameIDと優先順位が同じだったときはnoの小さいものを選ぶとこうです
14
+
15
+ - 元データ
16
+ ```SQL
17
+ create table tbl(ID int primary key,nicknameID int,priority int);
18
+ insert into tbl values
19
+ (1,20,1),
20
+ (2,20,2),
21
+ (3,20,3),
22
+ (4,21,2),
23
+ (5,21,3),
24
+ (6,23,2),
25
+ (7,24,1),
26
+ (8,24,1),
27
+ (9,24,4),
28
+ (10,25,3),
29
+ (11,25,3),
30
+ (12,25,4),
31
+ (13,25,4),
32
+ (14,26,2),
33
+ (15,26,3),
34
+ (16,26,4),
35
+ (17,26,4),
36
+ (18,26,4);
37
+ ```
38
+
39
+ - 抽出
40
+ ```SQL
41
+ select * from tbl as t1
42
+ 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)))
43
+ ```