Mysql
 sql >> Base de données >  >> RDS >> Mysql

IF Condition Exécuter la requête, Else Exécuter une autre requête

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.