次のクエリがあります...
SELECT DISTINCT TITLE, ID, IMAGE_1, IMAGE_1_DESCRIPTION
FROM PHOTO_GALLERY
ORDER BY ID ASC
もちろん、すべてのエントリが表示されますが、同じ TITLE フィールドを持つエントリを除外して、最小の ID だけを選択する必要があります。
このクエリに似た質問がいくつかあるのを見てきましたが、それらを調べても問題の答えが見つからないようです。
前もって感謝します!
Distinct は、指定された一連の列に対して一意の行を返します。おそらく、これをサブクエリとして使用する必要があります。
select min(id), title from photo_gallery group by title
group by
ではなくが必要ですdistinct
。最も低い ID を取得するには:
SELECT TITLE, min(ID) as minid
FROM PHOTO_GALLERY
group by title
ORDER BY minID ASC
残りの情報を取得するには、テーブルを再度結合する必要があります。明示的に結合したバージョンを次に示します。
SELECT pg.TITLE, pg.ID, pg.IMAGE_1, pg.IMAGE_1_DESCRIPTION
FROM PHOTO_GALLERY pg join
(SELECT TITLE, min(ID) as minid
FROM PHOTO_GALLERY
group by title
) pgt
on pg.title = pgt.title and pg.id = pgt.minid
ORDER BY ID ASC
選択は、「from」ビットでテーブルのデカルト積を行います。「どこ」は、節を満たさないものをノックアウトします。「order by」は残りをソートします。混合物は異なります。次の行と同一ではない最初の行が得られます。
そのため、タイトルに where 句を追加し、LIMIT を使用します