回答編集履歴

5

推敲

2020/08/25 03:25

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -54,6 +54,8 @@
54
54
 
55
55
  名前を判断に含めた場合を追加
56
56
 
57
+ 考え方は何も変わっておらず、単にキー項目を増やしただけです。
58
+
57
59
 
58
60
 
59
61
  相関副問合せ

4

訂正

2020/08/25 03:25

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -96,7 +96,7 @@
96
96
 
97
97
  from user inner join (
98
98
 
99
- select id, max(updateflg) max_flg from user group by id
99
+ select id, name, max(updateflg) max_flg from user group by id, name
100
100
 
101
101
  ) t1
102
102
 

3

追記

2020/08/25 03:03

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -47,3 +47,59 @@
47
47
  on user.id=t1.id and user.updateflg=t1.max_flg
48
48
 
49
49
  ```
50
+
51
+ 追記
52
+
53
+ --
54
+
55
+ 名前を判断に含めた場合を追加
56
+
57
+
58
+
59
+ 相関副問合せ
60
+
61
+ ```SQL
62
+
63
+ select * from user
64
+
65
+ where updateflg=(
66
+
67
+ select max(updateflg) from user t1 where id=user.id and name=user.name
68
+
69
+ )
70
+
71
+ ```
72
+
73
+ 副問合せ
74
+
75
+ ```SQL
76
+
77
+ select * from user
78
+
79
+ where (id, name, updateflg) in (
80
+
81
+ select id, name, max(updateflg) from user group by id, name
82
+
83
+ )
84
+
85
+ ```
86
+
87
+
88
+
89
+ インラインビューとの結合
90
+
91
+
92
+
93
+ ```SQL
94
+
95
+ select user.*
96
+
97
+ from user inner join (
98
+
99
+ select id, max(updateflg) max_flg from user group by id
100
+
101
+ ) t1
102
+
103
+ on user.id=t1.id and name=t1.name and user.updateflg=t1.max_flg
104
+
105
+ ```

2

追記

2020/08/25 03:02

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -11,6 +11,20 @@
11
11
  where updateflg=(
12
12
 
13
13
  select max(updateflg) from user t1 where id=user.id
14
+
15
+ )
16
+
17
+ ```
18
+
19
+ 副問合せ
20
+
21
+ ```SQL
22
+
23
+ select * from user
24
+
25
+ where (id, updateflg) in (
26
+
27
+ select id, max(updateflg) from user group by id
14
28
 
15
29
  )
16
30
 

1

追記

2020/08/25 01:05

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -1,3 +1,7 @@
1
+ 名前は旧姓などのケースがあると思いますので、判断には使用していません。
2
+
3
+
4
+
1
5
  相関副問合せ
2
6
 
3
7
  ```SQL