このテーブルがあるとしましょう:
group_id | image | image_id |
-----------------------------
23 blob 1
23 blob 2
23 blob 3
21 blob 4
21 blob 5
25 blob 6
25 blob 7
各グループIDのうち1つだけの結果を取得する方法この場合、1つのグループIDに複数の画像が存在する可能性があります。それぞれの結果が1つだけ必要ですgroup_id
個別に試しましたが、group_idしか取得できません。画像の最大値も機能しません。
Oracleにはno標準集計関数があり、BLOB
sで機能するため、_GROUP BY
_ソリューションは機能しません。
サブクエリでROW_NUMBER()
に基づいてこれを試してください。
_SELECT inn.group_id, inn.image, inn.image_id
FROM
(
SELECT t.group_id, t.image, t.image_id,
ROW_NUMBER() OVER (PARTITION BY t.group_id ORDER BY t.image_id) num
FROM theTable t
) inn
WHERE inn.num = 1;
_
上記は、各グループの最初の(_image_id
_に基づく)行を返す必要があります。
SELECT group_id, image, image_id
FROM a_table
WHERE (group_id, image_id) IN
(
SELECT group_id, MIN(image_id)
FROM a_table
GROUP BY
group_id
)
;