EDIT: Det jag sa nedan om att kräva en lagrad procedur är INTE SANT. Prova detta:
SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
THEN <QUERY A>
ELSE <QUERY B>
END
Detta är verkligen ett falluttryck, och det fungerar bra utanför en lagrad proc :-)
Till exempel:
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)
Gammalt svar nedan för historiskt intresse, eftersom det redan samlar upp röster:
Du kan använda nedanstående tror jag, men bara i en lagrad procedur:
CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
WHEN 1 THEN <QUERY A>
ELSE <QUERY B>
END CASE
Detta är ett CASE
uttalande, till skillnad från en CASE
uttryck... https://dev.mysql.com/doc /refman/5.0/en/case.html
har mer blodiga detaljer.
Egentligen misstänker jag i allmänhet att om du vill köra olika frågor villkorligt, kommer du att behöva se mot lagrade procedurer -- jag kan ha fel, men det är min magkänsla vid det här laget. Om du kan göra det, kommer det förmodligen att vara med CASE-uttryck!
En sista redigering:i vilket exempel som helst i den verkliga världen skulle jag förmodligen göra den villkorliga biten i min applikation och bara lämna över till SQL (eller till en ORM som skulle generera min SQL) när jag hade bestämt mig för vad jag skulle söka efter.