BEWERKEN: Wat ik hieronder zei over het vereisen van een opgeslagen procedure is NIET WAAR. Probeer dit:
SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
THEN <QUERY A>
ELSE <QUERY B>
END
Dit is inderdaad een case-expressie, en het werkt prima buiten een opgeslagen proces :-)
Bijvoorbeeld:
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)
Oud antwoord hieronder voor historisch belang, omdat het al upvotes verzamelt:
Je kunt het onderstaande gebruiken, denk ik, maar alleen binnen een opgeslagen procedure:
CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
WHEN 1 THEN <QUERY A>
ELSE <QUERY B>
END CASE
Dit is een CASE
statement, in tegenstelling tot een CASE
expressie... https://dev.mysql.com/doc /refman/5.0/en/case.html
heeft meer bloederige details.
Eigenlijk vermoed ik dat als je verschillende query's voorwaardelijk wilt uitvoeren, je naar opgeslagen procedures moet kijken -- ik kan het mis hebben, maar dat is mijn gevoel op dit moment. Als je het kunt, zal het waarschijnlijk met CASE-expressies zijn!
Nog een laatste bewerking:in elk voorbeeld uit de echte wereld zou ik waarschijnlijk het voorwaardelijke bit in mijn toepassing doen en het gewoon overdragen aan SQL (of aan een ORM die mijn SQL zou genereren) zodra ik had besloten waarnaar ik moest zoeken.