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

回答編集履歴

2

追記

2016/06/25 04:03

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  集計関数を使うためにはグループ化しなくてはいけません。
2
2
  記述を省略しても内部的にグループされています。
3
+ (例示のSQLでは全体を1つのグループとみなしています)
3
- そして一般的にSQLではグループ化に使ったカラム以外参照されるとエラーになります。
4
+ そして一般的にSQLではグループ化に使ったカラム以外参照るとエラーになります。
4
5
  ※しかし、mysqlはこれをエラーにしません。
5
6
 
6
7
  ```
@@ -16,4 +17,13 @@
16
17
  ※おそらくデータ的に先頭に近いものが選択されていると思いますが、この順は食費を更新したりすると変化するでしょう。
17
18
 
18
19
  **二つ目のSQLでは**
19
- 値が7560のレコードに絞り込んでいますので、「水道光熱費」か「家賃」のどちらが選択されます。
20
+ 値が7560のレコードに絞り込んでいますので、「水道光熱費」か「家賃」のどちらが選択されます。
21
+
22
+
23
+ もし値が最大のレコードを抽出したいなら次のようなSQLになります。
24
+ ※最大値のレコードが複数あれば、複数が抽出されます。
25
+ ```SQL
26
+ SELECT item, amount_invested
27
+ FROM hoge
28
+ WHERE amount_invested = (SELECT MAX(amount_invessted) FROM hoge);
29
+ ```

1

表現修正

2016/06/25 04:03

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -11,8 +11,8 @@
11
11
  ```
12
12
  仮にデータがこうだったとします。
13
13
  **最初のSQLでは**
14
- maxは7560と確定ですが、itemはamount_investedの値が7560のitemという縛りが無いので、「食費」か「水道光熱費」か「家賃」のどちらが選択されても良い状況です。
14
+ maxは7560と確定ですが、itemはamount_investedの値が7560のitemという縛りが無いので、「食費」か「水道光熱費」か「家賃」のどが選択されても良い状況です。
15
- このような場合、mysqlはユーザには結果が予測できない基準で一つを選択します。
15
+ このような場合、mysqlは**ユーザには結果が予測できない基準で**一つを選択します。
16
16
  ※おそらくデータ的に先頭に近いものが選択されていると思いますが、この順は食費を更新したりすると変化するでしょう。
17
17
 
18
18
  **二つ目のSQLでは**