MODIF : Ce que j'ai dit ci-dessous à propos de l'exigence d'une procédure stockée n'est PAS VRAI. Essayez ceci :
SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
THEN <QUERY A>
ELSE <QUERY B>
END
C'est, en effet, une expression de cas, et cela fonctionne bien en dehors d'un proc stocké :-)
Par exemple :
mysql> SELECT CASE WHEN ( 5 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END;
+---------------------------------------------------------------------+
| CASE WHEN ( 5 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END |
+---------------------------------------------------------------------+
| foo |
+---------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> SELECT CASE WHEN ( 3 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END;
+---------------------------------------------------------------------+
| CASE WHEN ( 3 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END |
+---------------------------------------------------------------------+
| bar |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
Ancienne réponse ci-dessous pour un intérêt historique, car elle recueille déjà des votes positifs :
Vous pouvez utiliser ce qui suit, je pense, mais uniquement dans une procédure stockée :
CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
WHEN 1 THEN <QUERY A>
ELSE <QUERY B>
END CASE
Ceci est un CASE
déclaration, par opposition à un CASE
expression... https://dev.mysql.com/doc /refman/5.0/en/case.html
a plus de détails sanglants.
En fait, je soupçonne qu'en général, si vous souhaitez exécuter différentes requêtes de manière conditionnelle, vous devrez vous tourner vers les procédures stockées - je peux me tromper, mais c'est mon intuition à ce stade. Si vous pouvez le faire, ce sera probablement avec des expressions CASE !
Une dernière modification :dans n'importe quel exemple du monde réel, je ferais probablement le bit conditionnel dans mon application, et je passerais simplement à SQL (ou à un ORM qui générerait mon SQL) une fois que j'aurais décidé quoi rechercher.