Maison >base de données >tutoriel mysql >Comment trouver la valeur maximale du signal pour chaque ID dans une table SQL ?
Requête de signal maximum pour chaque ID
Question :
Étant donné une table avec plusieurs signaux valeurs associées à chaque ID, comment écrire une requête pour récupérer la valeur maximale du signal pour chaque ID unique ? Prenons l'exemple de tableau suivant :
ID Signal Station OwnerID 111 -120 Home 1 111 -130 Car 1 111 -135 Work 2 222 -98 Home 2 222 -95 Work 1 222 -103 Work 2
Réponse :
Pour récupérer la valeur maximale du signal pour chaque ID sans affecter les autres colonnes telles que Station et OwnerID, un auto- join peut être utilisé :
select cur.id, cur.signal, cur.station, cur.ownerid from yourtable cur where not exists ( select * from yourtable high where high.id = cur.id and high.signal > cur.signal )
Cette requête joint la table à elle-même pour créer un produit cartésien. Pour chaque paire de lignes, il vérifie si la valeur du signal de la deuxième ligne (high) est supérieure à celle de la première ligne (cur). Si une valeur de signal plus élevée est trouvée pour le même ID, la ligne actuelle est exclue.
Le résultat est un tableau contenant uniquement les lignes avec la valeur de signal maximale pour chaque ID. Pour l'exemple de tableau, le résultat serait :
ID Signal Station OwnerID 111 -120 Home 1 222 -95 Work 1
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!