Mysql
 sql >> база данни >  >> RDS >> Mysql

АКО Условие Изпълнете заявка, иначе Извършете друга заявка

РЕДАКТИРАНЕ: Това, което казах по-долу относно изискването на съхранена процедура, НЕ Е ВЯРНО. Опитайте това:

SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
    THEN <QUERY A>
    ELSE <QUERY B>
END

Това наистина е израз на case и работи добре извън съхранена процедура :-)

Например:

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)

Стар отговор по-долу за исторически интерес, тъй като вече събира гласове за:

Според мен можете да използвате следното, но само в съхранена процедура:

CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
    WHEN 1 THEN <QUERY A>
    ELSE <QUERY B>
END CASE

Това е CASE израз, за ​​разлика от CASE израз... https://dev.mysql.com/doc /refman/5.0/en/case.html има повече кървави подробности.

Всъщност подозирам като цяло, ако искате да изпълнявате различни заявки условно, ще трябва да погледнете към съхранените процедури - може и да греша, но това е моето усещане в този момент. Ако можете да го направите, вероятно ще бъде с CASE изрази!

Една последна редакция:във всеки пример от реалния свят вероятно ще направя условния бит в моето приложение и просто ще го предам на SQL (или на ORM, който ще генерира моя SQL), след като реша какво да търся.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете топ 10 записа за всяка категория в MySQL

  2. Django models.py Циркулярен външен ключ

  3. Обща грешка в MySql:2053

  4. MySQL default date() + 14 дни, за колона?

  5. MyISAM срещу InnoDB