回答編集履歴

2

追記

2015/06/29 05:26

投稿

ngyuki
ngyuki

スコア4514

test CHANGED
@@ -49,3 +49,45 @@
49
49
  定番のパターンです。
50
50
 
51
51
 
52
+
53
+ ---
54
+
55
+
56
+
57
+ カンマ区切りにするなら `group_concat` を使う(MySQL 限定)。
58
+
59
+
60
+
61
+ ```lang-sql
62
+
63
+ select
64
+
65
+ user_id, name, group_concat(sub) as sub
66
+
67
+ from (
68
+
69
+ select
70
+
71
+ t.user_id, t.name, t.sub
72
+
73
+ from
74
+
75
+ t inner join t as t2 on t.user_id = t2.user_id
76
+
77
+ group by
78
+
79
+ t.id, t.user_id, t.name, t.sub, t.point
80
+
81
+ having
82
+
83
+ t.point = max(t2.point)
84
+
85
+ ) as x
86
+
87
+ group by
88
+
89
+ user_id, name
90
+
91
+ ```
92
+
93
+

1

追記

2015/06/29 05:26

投稿

ngyuki
ngyuki

スコア4514

test CHANGED
@@ -1,4 +1,4 @@
1
- サブクエリで。
1
+ 相関サブクエリで max を条件にする
2
2
 
3
3
 
4
4
 
@@ -17,3 +17,35 @@
17
17
  )
18
18
 
19
19
  ```
20
+
21
+
22
+
23
+ 自己結合で group by ... having で絞る。
24
+
25
+
26
+
27
+ ```lang-sql
28
+
29
+ select
30
+
31
+ t.user_id, t.name, t.sub
32
+
33
+ from
34
+
35
+ t inner join t as t2 on t.user_id = t2.user_id
36
+
37
+ group by
38
+
39
+ t.id, t.user_id, t.name, t.sub, t.point
40
+
41
+ having
42
+
43
+ t.point = max(t2.point)
44
+
45
+ ```
46
+
47
+
48
+
49
+ 定番のパターンです。
50
+
51
+