Sous-requêtes de valeur maximale en SQL
Dans cette requête, vous cherchez à récupérer les valeurs correspondantes pour les colonnes en fonction de la valeur maximale d'une autre colonne . Bien que votre approche originale utilise une instruction GROUP BY, elle récupère de manière fiable uniquement l'ID vidéo maximum, mais pas les données associées des autres colonnes.
Pour résoudre ce problème, envisagez d'utiliser une sous-requête qui identifie les ID vidéo maximum distincts par catégorie. . La requête modifiée ci-dessous adhère à cette approche :
SELECT * FROM videos WHERE video_id IN ( SELECT DISTINCT MAX(video_id) FROM videos GROUP BY video_category ) ORDER BY video_category ASC
Dans cette requête, une sous-requête est utilisée pour isoler l'ensemble des identifiants vidéo maximum. Le tableau est ensuite filtré à l'aide de cet ensemble pour récupérer toutes les colonnes pour les ID vidéo maximum correspondants. En exploitant l'opérateur IN et en concaténant les résultats, cette requête récupère efficacement les valeurs souhaitées.
Vous pouvez également utiliser une opération de jointure pour obtenir le même résultat, comme indiqué ci-dessous :
SELECT s.video_id ,s.video_category ,s.video_url ,s.video_date ,s.video_title ,s.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
Cette approche utilise une jointure pour faire correspondre les lignes d'ID vidéo maximum avec les lignes correspondantes de la table des vidéos, récupérant l'ensemble complet de colonnes pour chaque ID vidéo maximum. Les deux solutions résolvent efficacement le problème en capturant les valeurs associées au nombre maximal d'identifiants vidéo dans chaque catégorie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!