Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JEŚLI warunek Wykonaj zapytanie, w przeciwnym razie wykonaj inne zapytanie

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ć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL — Model listy sąsiedztwa — Uzyskaj głębię

  2. Włącz Pythona, aby połączyć się z MySQL przez tunelowanie SSH

  3. Jak zwrócić tabelę za pomocą funkcji mysql?

  4. Integracja obrazu z jQuery AutoComplete

  5. Wstaw kolejny numer w MySQL