编辑: 我下面说的关于要求存储过程的说法是不正确的。尝试这个:
SELECt CASE WHEN ( (SELECT COUNT(*) FROM table WHERe term LIKE "term") > 4000 ) THEN <QUERY A> ELSE <QUERY B>END
确实,这是一个case表达式,在存储的proc外部也可以正常工作:-)
例如:
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(或交给生成我的SQL的ORM)。



