Maison >base de données >tutoriel mysql >Comment puis-je exécuter efficacement une deuxième requête SELECT dans MySQL uniquement si la première requête ne renvoie aucune ligne ?

Comment puis-je exécuter efficacement une deuxième requête SELECT dans MySQL uniquement si la première requête ne renvoie aucune ligne ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 07:34:33898parcourir

How Can I Efficiently Execute a Second SELECT Query in MySQL Only if the First Query Returns Zero Rows?

Requêtes SELECT conditionnelles : exécution de requêtes alternatives basées sur le nombre de lignes

Pour optimiser votre script PHP, vous recherchez une méthode d'exécution dynamique une deuxième requête SELECT uniquement lorsque la première requête ne renvoie aucune ligne. Voici comment y parvenir dans MySQL :

Une approche consiste à utiliser des instructions IF imbriquées pour comparer le nombre de lignes de la première requête :

IF (SELECT COUNT(*) FROM proxies WHERE A='B') > 0
  THEN SELECT * FROM proxies WHERE A='B'
ELSEIF (SELECT COUNT(*) FROM proxies WHERE A='C') > 0
  THEN SELECT * FROM proxies WHERE A='C'
END IF

Cependant, cette méthode exécute chaque requête deux fois pour chaque condition. Pour une meilleure optimisation, pensez à utiliser UNION ALL avec l'opérateur EXISTS :

SELECT *
FROM proxies
WHERE A='B'
UNION ALL
SELECT *
FROM proxies
WHERE A='C' AND NOT EXISTS (
  SELECT 1
  FROM proxies
  WHERE A='B'
)

Cette requête recherchera d'abord les lignes avec A='B' et les renverra. Si aucune ligne avec A='B' n'est trouvée, il récupérera alors les lignes avec A='C', garantissant qu'une seule requête est exécutée.

Une démo de SQL Fiddle peut être trouvée ici : [Lien]

Cette approche exécute efficacement la deuxième requête uniquement lorsque la première requête ne renvoie aucune ligne, offrant ainsi des performances améliorées pour votre script PHP.

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