私は実際の問題の縮小版である以下の表をmysqlに持っています。集計後に追加の列を保存するにはどうすればよいですか?
私は、次の表を取得するには、*の付いた行を選択したい+-------+-------+-------+-------+
| a_col | b_col | c_col | extra |
+-------+-------+-------+-------+
| 1 | 1 | 1 | 7 |*
| 1 | 2 | 1 | 10 |
| 1 | 2 | 2 | 20 |*
| 1 | 3 | 2 | 20 |
| 1 | 3 | 3 | 15 |*
+-------+-------+-------+-------+
:
+-------+-------+-------+-------+
| a_col | b_col | c_col | extra |
+-------+-------+-------+-------+
| 1 | 1 | 1 | 7 |
| 1 | 2 | 2 | 20 |
| 1 | 3 | 3 | 15 |
+-------+-------+-------+-------+
2つの行がa_colとb_colに同じ値を持っている場合は、最大を持っているものを保ちますc_colの値は
私の試みがあった。
select a_col, b_col, max(c_col), extra
from mytable
group by a_col, b_col
しかし、私は、次のエラーメッセージが表示されます:私は私が望むものに近いものを得る「余分な」欄に言及せずに
ERROR 1055 (42000): Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'bd17_g12.mytable.extra' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
:
+-------+-------+------------+
| a_col | b_col | max(c_col) |
+-------+-------+------------+
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | 3 | 3 |
+-------+-------+------------+
をしかし、私はあなたが得ることができる「エクストラ」列