Maison  >  Article  >  base de données  >  Comment renvoyer une valeur par défaut pour les lignes SQL absentes lors de l'utilisation de jointures ?

Comment renvoyer une valeur par défaut pour les lignes SQL absentes lors de l'utilisation de jointures ?

DDD
DDDoriginal
2024-11-01 12:23:30584parcourir

How to Return a Default Value for Absent SQL Rows When Using Joins?

Comment renvoyer une valeur par défaut pour les lignes SQL absentes

Supposons que vous ayez une requête active qui récupère les informations de deux tables jointes, show et calendrier, en fonction de critères précis. S'il n'y a aucune ligne correspondante dans votre requête, comment vous assurer qu'une valeur par défaut est renvoyée au lieu d'un résultat vide ?

Une solution consiste à utiliser la fonction IFNULL() ou COALESCE() dans votre requête. Ces fonctions prennent deux arguments :

IFNULL(expression, default_value)
COALESCE(expression, default_value)

expression fait référence à la valeur dont vous vérifiez la nullité, et default_value est la valeur que vous souhaitez renvoyer si l'expression est nulle.

Exemple :

<code class="sql">SELECT IFNULL(`file`, 'default.webm') AS `file`
FROM `show`, `schedule`...</code>

Cette requête renverra 'default.webm' s'il n'y a pas de lignes correspondantes.

Cependant, dans votre cas spécifique, où vous récupérez une seule ligne , vous pouvez exploiter une fonction d'agrégation pour garantir une valeur nulle en cas d'absence de lignes correspondantes :

<code class="sql">SELECT IFNULL(MIN(`file`), 'default.webm') `file` 
FROM `show`, `schedule` 
WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP() 
AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` 
ORDER BY `start_time` DESC LIMIT 1</code>

L'utilisation de MIN() garantit qu'une valeur nulle est renvoyée si aucun enregistrement n'est sélectionné. Par la suite, IFNULL() remplacera alors la valeur nulle par la valeur par défaut, garantissant que votre requête renvoie toujours un résultat non vide.

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