supposons que j'ai cette table:
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
comment obtenir les résultats de seulement 1 de chaque identifiant de groupe? dans ce cas, il peut y avoir plusieurs images pour un identifiant de groupe, je veux juste un résultat de chaque group_id
j'ai essayé distinct mais je n'obtiendrai que group_id. max pour l'image ne fonctionnerait pas non plus.
Il n'y a aucune fonction d'agrégation standard dans Oracle qui fonctionnerait avec BLOB
s, donc les solutions GROUP BY
Ne fonctionneront pas.
Essayez celui-ci basé sur ROW_NUMBER()
dans une sous-requête.
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;
Ce qui précède doit renvoyer la première ligne (basée sur image_id
) Pour chaque groupe.
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
)
;