Mysql
 sql >> Database >  >> RDS >> Mysql

IF Condizione Esegui query, altrimenti Esegui altra query

MODIFICA: Ciò che ho detto di seguito sulla richiesta di una stored procedure NON è VERO. Prova questo:

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

Questa è, in effetti, un'espressione case e funziona bene al di fuori di un processo memorizzato :-)

Ad esempio:

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)

Vecchia risposta di seguito per interesse storico, poiché raccoglie già voti positivi:

È possibile utilizzare quanto segue, credo, ma solo all'interno di una procedura memorizzata:

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

Questo è un CASE istruzione, a differenza di un CASE espressione... https://dev.mysql.com/doc /refman/5.0/en/case.html ha più dettagli cruenti.

In realtà, sospetto in generale che se si desidera eseguire query diverse in modo condizionale, sarà necessario guardare alle procedure archiviate:potrei sbagliarmi, ma a questo punto è il mio istinto. Se puoi farlo, probabilmente sarà con le espressioni CASE!

Un'ultima modifica:in qualsiasi esempio del mondo reale, probabilmente farei il bit condizionale nella mia applicazione e passerei semplicemente a SQL (o a un ORM che genererebbe il mio SQL) una volta deciso cosa cercare.