EDYTUJ: To, co powiedziałem poniżej o wymaganiu procedury składowanej, NIE JEST PRAWDĄ. Spróbuj tego:
SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
THEN <QUERY A>
ELSE <QUERY B>
END
To jest rzeczywiście wyrażenie wielkości liter i działa dobrze poza przechowywanym procesem :-)
Na przykład:
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)
Poniższa stara odpowiedź dotycząca zainteresowania historycznego, ponieważ już zbiera głosy za:
Myślę, że możesz użyć poniższego, ale tylko wewnątrz procedury składowanej:
CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
WHEN 1 THEN <QUERY A>
ELSE <QUERY B>
END CASE
To jest CASE
instrukcja, w odróżnieniu od CASE
wyrażenie... https://dev.mysql.com/doc /refman/5.0/en/case.html
ma więcej krwawych szczegółów.
Właściwie podejrzewam, że jeśli chcesz warunkowo wykonywać różne zapytania, będziesz musiał zwrócić uwagę na procedury składowane — mogę się mylić, ale w tym momencie takie jest moje przeczucie. Jeśli możesz to zrobić, prawdopodobnie będzie to z wyrażeniami CASE!
Ostatnia zmiana:w każdym przykładzie ze świata rzeczywistego prawdopodobnie wykonałbym bit warunkowy w mojej aplikacji i po prostu przekazałbym go do SQL (lub do ORM, który wygeneruje mój SQL), gdy zdecyduję, czego szukać.