Maison > base de données > tutoriel mysql > Comment gérer les enregistrements manquants dans une requête IN avec des valeurs par défaut ?

Comment gérer les enregistrements manquants dans une requête IN avec des valeurs par défaut ?

Linda Hamilton
Libérer: 2025-01-17 06:36:14
original
806 Les gens l'ont consulté

How to Handle Missing Records in an IN Query with Default Values?

Récupérer la valeur par défaut pour la condition de requête IN

Supposons qu'une requête récupère les informations de l'utilisateur et le nombre de minutes pendant lesquelles il a été en ligne au cours d'une plage de dates spécifiée. Il utilise une requête IN pour filtrer les utilisateurs en fonction de leur identifiant. L'objectif est de renvoyer une valeur par défaut pour les identifiants qui n'ont aucun enregistrement correspondant.

Requête simplifiée :

<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline
FROM UserTable
     LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID
WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00'
AND users.ID IN (1,2,3,4,5);</code>
Copier après la connexion

Requête modifiée :

Pour obtenir les résultats souhaités, déplacez la condition de OnlineUseage vers la clause FROM. Cela garantit que la jointure gauche se comporte comme une jointure interne, filtrant les utilisateurs sans aucun enregistrement correspondant dans OnlineUseage.

<code class="language-sql">SELECT
    users.Name,
    users.ID,
    IFNULL(SUM(users.Minutes), 0) AS MinutesOnline
FROM
    users
    LEFT JOIN OnlineUseage ON
        OnlineUseage.ID = users.ID AND
        OnlineUseage.Date >= '2016-01-01 00:00:00' AND
        OnlineUseage.Date < '2016-01-31 00:00:00'
WHERE users.ID IN (1,2,3,4,5);</code>
Copier après la connexion

La requête récupérera désormais les utilisateurs avec des enregistrements correspondants dans OnlineUseage et les utilisateurs sans enregistrements correspondants, tout en définissant MinutesOnline sur la valeur par défaut de 0 pour les utilisateurs sans enregistrements correspondants.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal