回答編集履歴
3
fix
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
また、kokardy さんの回答と考え方はほとんど同じですが、
|
19
19
|
サブクエリを使わずに group by と having で済ませる方法もあります。
|
20
20
|
ただし、この書き方は MySQL でしかできません。
|
21
|
-
(ほか RDBMS だと select にアスタリスクは使えないし group by に test の列を羅列しないといけない)
|
21
|
+
(ほか RDBMS だと group by で select にアスタリスクは使えないし group by に test の列を羅列しないといけない)
|
22
22
|
|
23
23
|
```sql
|
24
24
|
CREATE VIEW `view_test` AS
|
2
追記
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
この方法なら `user_id` と `input_date` で重複があっても `user_id` ごとに1行しか返りません。
|
3
3
|
ただしたいていの場合、こっちのほうが遅いです。
|
4
4
|
|
5
|
-
```
|
5
|
+
```sql
|
6
6
|
CREATE VIEW `view_test` AS
|
7
7
|
select * from test t
|
8
8
|
where t.id = (
|
@@ -11,4 +11,19 @@
|
|
11
11
|
order by x.input_date desc, x.id desc
|
12
12
|
limit 1
|
13
13
|
)
|
14
|
-
```
|
14
|
+
```
|
15
|
+
|
16
|
+
---
|
17
|
+
|
18
|
+
また、kokardy さんの回答と考え方はほとんど同じですが、
|
19
|
+
サブクエリを使わずに group by と having で済ませる方法もあります。
|
20
|
+
ただし、この書き方は MySQL でしかできません。
|
21
|
+
(ほか RDBMS だと select にアスタリスクは使えないし group by に test の列を羅列しないといけない)
|
22
|
+
|
23
|
+
```sql
|
24
|
+
CREATE VIEW `view_test` AS
|
25
|
+
select t.* from test t
|
26
|
+
inner join test x on x.user_id = t.user_id
|
27
|
+
group by t.id
|
28
|
+
having t.input_date = max(x.input_date)
|
29
|
+
```
|
1
fix
answer
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
他にも定番の方法としては次のような相関サブクエリを使う方法があげられます。
|
1
|
+
他にも定番の方法としては次のような相関サブクエリを使う方法があげられます。
|
2
|
+
この方法なら `user_id` と `input_date` で重複があっても `user_id` ごとに1行しか返りません。
|
3
|
+
ただしたいていの場合、こっちのほうが遅いです。
|
2
4
|
|
3
5
|
```
|
4
6
|
CREATE VIEW `view_test` AS
|