私はデータを持つテーブル番号がある場合:SQL GROUP BYと集計
+------+------+------+------+
| colA | colB | colC | colD |
+------+------+------+------+
| 1 | 2 | 3 | 4 |
| 1 | 2 | 9 | 5 |
+------+------+------+------+
をして実行します。
select colA, colB, colC, MAX(colD) FROM Numbers GROUP BY colA, colB;
が、私はそれがcolA, colB
によって行2.グループを返すべきであると信じているとピックcolD
の中で最大のものです。あなたもそれを返すためにCOLCによってグループに持っているので、
残念ながら、これは、動作しません。
なぜですか?私がやろうとしていることをする別の方法がありますか?
colA
とcolB
の行を同じにしたいが、最大のものはcolD
です。
これはNATURAL JOINの良いユースケースです。 – Benoit
ありがとう、そして、あなたが質問をリファクタリングするためにBenoitに感謝します:)カラム名が両方で同じ場合、本当にすべてを "on"にする必要がありますか? – momomo
@Hamidamはい、それらのうちの1つが主キーでない限り、それらはすべてON句にリストされている必要があります。例えば 'colA'がユニークなキー値であれば、' ON tbl.colA = g.colA'を行うことができますが、独自のものではないので、必要なだけ多くの列を組み合わせて一意の値 'colA 、colB、MAX(colD) ' –