回答編集履歴

2

追記

2016/06/25 04:03

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  記述を省略しても内部的にグループされています。
4
4
 
5
+ (例示のSQLでは全体を1つのグループとみなしています)
6
+
5
- そして一般的にSQLではグループ化に使ったカラム以外参照されるとエラーになります。
7
+ そして一般的にSQLではグループ化に使ったカラム以外参照るとエラーになります。
6
8
 
7
9
  ※しかし、mysqlはこれをエラーにしません。
8
10
 
@@ -35,3 +37,21 @@
35
37
  **二つ目のSQLでは**
36
38
 
37
39
  値が7560のレコードに絞り込んでいますので、「水道光熱費」か「家賃」のどちらが選択されます。
40
+
41
+
42
+
43
+
44
+
45
+ もし値が最大のレコードを抽出したいなら次のようなSQLになります。
46
+
47
+ ※最大値のレコードが複数あれば、複数が抽出されます。
48
+
49
+ ```SQL
50
+
51
+ SELECT item, amount_invested
52
+
53
+ FROM hoge
54
+
55
+ WHERE amount_invested = (SELECT MAX(amount_invessted) FROM hoge);
56
+
57
+ ```

1

表現修正

2016/06/25 04:03

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -24,9 +24,9 @@
24
24
 
25
25
  **最初のSQLでは**
26
26
 
27
- maxは7560と確定ですが、itemはamount_investedの値が7560のitemという縛りが無いので、「食費」か「水道光熱費」か「家賃」のどちらが選択されても良い状況です。
27
+ maxは7560と確定ですが、itemはamount_investedの値が7560のitemという縛りが無いので、「食費」か「水道光熱費」か「家賃」のどが選択されても良い状況です。
28
28
 
29
- このような場合、mysqlはユーザには結果が予測できない基準で一つを選択します。
29
+ このような場合、mysqlは**ユーザには結果が予測できない基準で**一つを選択します。
30
30
 
31
31
  ※おそらくデータ的に先頭に近いものが選択されていると思いますが、この順は食費を更新したりすると変化するでしょう。
32
32