sql >> Base de Datos >  >> RDS >> Mysql

IF Condición Realizar Consulta, De lo contrario Realizar Otra Consulta

EDITAR: Lo que dije a continuación sobre la necesidad de un procedimiento almacenado NO ES CIERTO. Prueba esto:

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

Esta es, de hecho, una expresión de caso, y funciona bien fuera de un proceso almacenado :-)

Por ejemplo:

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)

Respuesta anterior a continuación por interés histórico, ya que ya reúne votos a favor:

Creo que puede usar lo siguiente, pero solo dentro de un procedimiento almacenado:

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

Este es un CASE declaración, a diferencia de un CASE expresión... https://dev.mysql.com/doc /refman/5.0/en/case.html tiene más detalles sangrientos.

En realidad, sospecho que, en general, si desea ejecutar diferentes consultas de forma condicional, tendrá que buscar procedimientos almacenados; podría estar equivocado, pero esa es mi intuición en este momento. Si puedes hacerlo, ¡probablemente será con expresiones CASE!

Una última edición:en cualquier ejemplo del mundo real, probablemente haría el bit condicional en mi aplicación y simplemente pasaría a SQL (o a un ORM que generaría mi SQL) una vez que hubiera decidido qué buscar.