Maison >base de données >tutoriel mysql >Comment récupérer des enregistrements avec des valeurs par défaut à l'aide de requêtes IN pour les données manquantes ?

Comment récupérer des enregistrements avec des valeurs par défaut à l'aide de requêtes IN pour les données manquantes ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 06:46:08856parcourir

How to Retrieve Records with Default Values Using IN Queries for Missing Data?

Utilisation de requêtes IN pour récupérer des enregistrements avec des valeurs par défaut pour les données manquantes

Lors d'une requête sur l'activité en ligne d'un utilisateur au cours d'une plage de dates spécifique à l'aide d'une clause IN, vous pouvez rencontrer des situations dans lesquelles certains ID utilisateur dans la condition IN n'ont pas d'entrées correspondantes dans la table OnlineUsage. Pour gérer cela et renvoyer les valeurs par défaut pour les données manquantes, une structure de requête modifiée est nécessaire.

Une requête standard peut renvoyer uniquement des résultats pour les ID avec des enregistrements correspondants. Pour inclure tous les identifiants de votre liste IN, même ceux qui ne correspondent pas aux données d'utilisation en ligne, restructurez la requête pour exploiter un LEFT JOIN (ou équivalent). La clé est de déplacer la condition de plage de dates de la clause WHERE à la condition JOIN.

<code class="language-sql">SELECT
    users.Name,
    users.ID,
    IFNULL(SUM(OnlineUsage.Minutes), 0) AS MinutesOnline
FROM
    users
    LEFT JOIN OnlineUsage ON users.ID = OnlineUsage.ID
        AND OnlineUsage.Date >= '2016-01-01 00:00:00' AND OnlineUsage.Date < '2017-01-01 00:00:00'
WHERE users.ID IN (1, 2, 3, 4, 5) -- Your list of IDs here
GROUP BY users.ID;</code>

Cette requête révisée utilise un LEFT JOIN pour garantir que tous les utilisateurs sont inclus. La fonction IFNULL gère les cas où SUM(OnlineUsage.Minutes) renvoie NULL (pour les utilisateurs sans données d'utilisation en ligne) en remplaçant un 0. La clause GROUP BY est cruciale pour agréger MinutesOnline correctement pour chaque utilisateur. Cette approche garantit un ensemble de données complet, fournissant une représentation cohérente de tous les utilisateurs dans le délai spécifié, qu'ils disposent ou non d'enregistrements d'utilisation en ligne.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn