UPRAVIT: To, co jsem řekl níže o vyžadování uložené procedury, NENÍ PRAVDA. Zkuste toto:
SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
THEN <QUERY A>
ELSE <QUERY B>
END
Toto je skutečně případový výraz a funguje dobře mimo uložený proces :-)
Například:
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)
Stará odpověď níže pro historické zajímavosti, protože již sbírala hlasy pro:
Myslím, že můžete použít níže uvedené, ale pouze uvnitř uložené procedury:
CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
WHEN 1 THEN <QUERY A>
ELSE <QUERY B>
END CASE
Toto je CASE
na rozdíl od CASE
výraz... https://dev.mysql.com/doc /refman/5.0/cs/case.html
má více krvavých detailů.
Ve skutečnosti se obecně domnívám, že pokud chcete podmínečně provádět různé dotazy, budete se muset podívat na uložené procedury – mohu se mýlit, ale v tuto chvíli to je můj pocit. Pokud to dokážete, bude to pravděpodobně s výrazy CASE!
Jedna poslední úprava:v jakémkoli příkladu ze skutečného světa bych pravděpodobně provedl podmíněný bit ve své aplikaci a jakmile bych se rozhodl, co hledat, prostě předám SQL (nebo ORM, který by mi vygeneroval SQL).