Ok, voici ma requête:
SELECT
video_category,
video_url,
video_date,
video_title,
short_description,
MAX(video_id)
FROM
videos
GROUP BY
video_category
Quand il tire les données, j'obtiens la ligne correcte pour le video_id, mais il tire la première ligne pour chaque catégorie pour les autres. Ainsi, lorsque j'obtiens le résultat maximal pour le video_id de la catégorie 1, j'obtiens l'ID maximal, mais la première ligne du tableau pour l'URL, la date, le titre et la description.
Comment puis-je le faire extraire les autres colonnes qui correspondent au résultat max ID?
Modifier: corrigé.
SELECT
*
FROM
videos
WHERE
video_id IN
(
SELECT
DISTINCT
MAX(video_id)
FROM
videos
GROUP BY
video_category
)
ORDER BY
video_category ASC
J'essaierais quelque chose comme ça:
SELECT
s.video_id
,s.video_category
,s.video_url
,s.video_date
,s.video_title
,short_description
FROM videos s
JOIN (SELECT MAX(video_id) AS id FROM videos GROUP BY video_category) max
ON s.video_id = max.id
ce qui est bien plus rapide que votre propre solution
Voici une solution plus générale (gère les doublons)
CREATE TABLE test(
i INTEGER,
c INTEGER,
v INTEGER
);
insert into test(i, c, v)
values
(3, 1, 1),
(3, 2, 2),
(3, 3, 3),
(4, 2, 4),
(4, 3, 5),
(4, 4, 6),
(5, 3, 7),
(5, 4, 8),
(5, 5, 9),
(6, 4, 10),
(6, 5, 11),
(6, 6, 12);
SELECT t.c, t.v
FROM test t
JOIN (SELECT test.c, max(i) as mi FROM test GROUP BY c) j ON
t.i = j.mi AND
t.c = j.c
ORDER BY c;