EDIT: Det, jeg sagde nedenfor om at kræve en lagret procedure, er IKKE SAND. Prøv dette:
SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
THEN <QUERY A>
ELSE <QUERY B>
END
Dette er faktisk et kasusudtryk, og det fungerer fint uden for en lagret proc :-)
For eksempel:
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)
Gamle svar nedenfor for historisk interesse, da det allerede samler opstemmer:
Du kan bruge nedenstående tror jeg, men kun i en lagret procedure:
CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
WHEN 1 THEN <QUERY A>
ELSE <QUERY B>
END CASE
Dette er en CASE
sætning, til forskel fra en CASE
udtryk... https://dev.mysql.com/doc /refman/5.0/da/case.html
har flere blodige detaljer.
Faktisk formoder jeg generelt, at hvis du vil udføre forskellige forespørgsler betinget, bliver du nødt til at se mod lagrede procedurer -- jeg kan tage fejl, men det er min mavefornemmelse på dette tidspunkt. Hvis du kan gøre det, vil det sandsynligvis være med CASE-udtryk!
En sidste redigering:i et hvilket som helst eksempel fra den virkelige verden ville jeg nok lave den betingede bit i min applikation og bare aflevere til SQL (eller til en ORM, som ville generere min SQL), når jeg havde besluttet, hvad jeg skulle søge efter.