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

回答編集履歴

2

追記

2015/06/29 05:26

投稿

ngyuki
ngyuki

スコア4516

answer CHANGED
@@ -23,3 +23,24 @@
23
23
  ```
24
24
 
25
25
  定番のパターンです。
26
+
27
+ ---
28
+
29
+ カンマ区切りにするなら `group_concat` を使う(MySQL 限定)。
30
+
31
+ ```lang-sql
32
+ select
33
+ user_id, name, group_concat(sub) as sub
34
+ from (
35
+ select
36
+ t.user_id, t.name, t.sub
37
+ from
38
+ t inner join t as t2 on t.user_id = t2.user_id
39
+ group by
40
+ t.id, t.user_id, t.name, t.sub, t.point
41
+ having
42
+ t.point = max(t2.point)
43
+ ) as x
44
+ group by
45
+ user_id, name
46
+ ```

1

追記

2015/06/29 05:26

投稿

ngyuki
ngyuki

スコア4516

answer CHANGED
@@ -1,4 +1,4 @@
1
- サブクエリで。
1
+ 相関サブクエリで max を条件にする
2
2
 
3
3
  ```lang-sql
4
4
  select t.user_id, t.name, t.sub
@@ -7,4 +7,19 @@
7
7
  t.point = (
8
8
  select max(point) from t t2 where t2.user_id = t.user_id group by t.user_id
9
9
  )
10
- ```
10
+ ```
11
+
12
+ 自己結合で group by ... having で絞る。
13
+
14
+ ```lang-sql
15
+ select
16
+ t.user_id, t.name, t.sub
17
+ from
18
+ t inner join t as t2 on t.user_id = t2.user_id
19
+ group by
20
+ t.id, t.user_id, t.name, t.sub, t.point
21
+ having
22
+ t.point = max(t2.point)
23
+ ```
24
+
25
+ 定番のパターンです。