MAX()
を使用する場合 GROUP BY
句は基本的に、最大値を決定するアイテムをグループ化する方法をクエリエンジンに指示します。最初の例では、1つの列のみを選択していたため、グループ化する必要はありませんでした。しかし、2番目の例では、複数の列がありました。したがって、最大値を見つけるために比較するものを決定する方法をクエリエンジンに指示する必要があります。
id
でグループ化するように指示しました 桁。これは、同じid
を持つレコードを比較することを意味します 一意のid
ごとに最大値を指定します 。すべてのレコードには異なるid
があるため 、基本的にその条項では何もしませんでした。
すべてのレコードをid
でグループ化しました 1
の (これは単一のレコードでした)、最大のid
を持つレコードを返しました そのグループから(それはそのレコードでした)。 2
についても同じことをしました 、3
、など。
ここに示されている3つの列の場合、レコードをグループ化することが理にかなっている唯一の場所は、test_id
です。 桁。このようなもの:
SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null
GROUP BY test_id
これにより、test_id
でグループ化されます。 、したがって、結果にはレコード6(最大のid
)が含まれます。 test_id
の場合 0)、4(最大のid
test_id
の場合 1)、および8(最大のid
test_id
の場合 2)。 test_id
の3つの一意の値に基づいて、レコードをこれらの3つのグループに分割します。 列では、「最大」のid
を効果的に見つけることができます 各グループ内。