come scrivere una dichiarazione IF ELSE in una query MySQL

come posso scrivere una dichiarazione IF ELSE in una query MySQL?

qualcosa di simile:

mysql_query("...(irrelevant code).. IF(action==2&&state==0){state=1}");

poi nel mio array dovrei essere in grado di fare questo:

 $row['state'] 
//this should equal 1, the query should not change anything in the database, 
//just the variable for returning the information

En title : How do write IF ELSE statement in a MySQL query

18 Comments:

  1. stai cercando case:

    case when action = 2 and state = 0 then 1 else 0 end as state
    

    MySQL ha una sintassi if (if(action=2 and state=0, 1, 0)), ma case è più universale.

    si noti che il as state c'è solo l'alias della colonna. sto assumendo che questo sia nell'elenco delle colonne della query SQL.

  2. è necessario scriverlo in SQL non in stile C / PHP

    IF( action = 2 AND state = 0, 1, 0 ) AS state
    

    per l'uso in query

    IF ( action = 2 AND state = 0 ) THEN SET state = 1
    

    per l'uso in procedure o funzioni memorizzate

    1. non riesco a far funzionare questo con il mio codice, forse il mio posizionamento è sbagliato, o qualcosa:

      selezionare *, N.id IF (N.action = 2 AND N.state =, 1,) AS N.state FROM le notifiche N, messaggi P WHERE N.userID = '$session' AND N.uniqueID = P.ID AND P.state = '0' AND N.action = '1' ORDER BY N.date DESC

  3. probabilmente si desidera utilizzare un CASE espressione.

    sembrano così:

    SELECT col1, col2, (case when (action = 2 and state = 0) 
     THEN
          1 
     ELSE
          0 
     END)
     as state from tbl1;
    
    1. grazie, la tua risposta sembrava più facile da seguire, (per quanto riguarda dove il caso è supponiamo di andare nella query, tuttavia sono stato in grado di farlo funzionare correttamente:

      "select *, N.id (CASE WHEN (N.action = 2 AND N.state = =) THEN 1 ELSE END) AS N.state FROM notifications N, posts P WHERE N.userID = '$session' AND N.uniqueID = P.ID AND P.state = '0' AND N.action = '1' ORDER BY N.date DESC"

    1. @DylanCross Sembra che potrebbe mancare una virgola tra N.id e (CASE WHEN ...
    1. @DylanCross Si potrebbe anche bisogno di cambiare AS N.state a AS state.
    1. si ha un errore nella sintassi SQL; controllare il manuale corrispondente alla versione del server MySQL per usare la sintassi giusta vicino a '= = 2 E N.state = =) THEN 1 ELSE END) come stato dalle notifiche N, messaggi P' alla riga 1
    1. sì, avevo appena cambiato quelli e sembra funzionare, per quanto non restituire un errore, Penso che tutto quello che devo fare ora è solo giocare con la query, in quanto è una sorta di cosa complessa che sto cercando di realizzare. grazie con il vostro aiuto per quanto riguarda la mia domanda.
  4. SELECT col1, col2, IF( action = 2 AND state = 0, 1, 0 ) AS state from tbl1;
    

    o o o o o

    SELECT col1, col2, (case when (action = 2 and state = 0) then 1 else 0 end) as state from tbl1;
    

    entrambi i risultati saranno uguali....

    1. una cosa che ho notato ma non ho trovato documentazione è che la IF deve essere l'ultima nella lista delle colonne. se è prima, allora dà un errore. chiunque sa dove vedere questo nella documentazione? il suo mi guida pazzo. quando scopro qualcosa, mi piace vederlo documentato per riferimento futuro

More similar articles:

  • dichiarazione MySQL IF in un grilletto - ELSE non fare nulla
  • se ELSE o CASE nella dichiarazione di MySQL?
  • come usare l'istruzione IF e ELSE per la query sql
  • dichiarazione di MySQL IF, IF SET, ELSE non fanno nulla?
  • usare IF/ELSE in MySQL con istruzione PRINT
  • come eseguire una query con IF e ELSE in Android sqlite?
  • MySQL: se un valore di colonna è 2 THEN do X ELSE do Y
  • utilizzo di IF/ELSE in MySQL SELECT
  • utilizzando IF... THEN... ELSE per scegliere tra due query SELECT
  • come posso fare la dichiarazione IF ELSE nella barra formula excel?
  • come scrivere le condizioni SE ELSE nel Prolog
  • c # Utilizzare il valore restituito dal metodo nella dichiarazione IF/ELSE
  • perché le operazioni matematiche e l'output delle variabili d'ambiente in un ramo ELSE non funzionano come previsto?
  • inserisci IF Condition, ELSE Do Nothing, MySQLi
  • dichiarazione WordPress IF non sta mettendo fuori ELSE
  • verificare se la dichiarazione IF ELSE è valida
  • se ELSE dichiarazione php
  • se ESISTI THEN ELSE
  • dichiarazione di PHP IF e ELSE - conversione da ASP
  • While-loop all'interno di ELSE-dichiarazione non stampare tutte le risposte
  • RapidMiner: c'è un modo per utilizzare gli operatori decisionali come IF, SE ELSE, ELSE, ecc
  • perché la dichiarazione IF/ELSE non funziona correttamente?
  • nessun risultato nella query Linq dà riferimento all'oggetto non impostato ad un'istanza di un oggetto nell'istruzione SE ELSE
  • dichiarazione IF ed ELSE in base al valore della colonna
  • buone pratiche per l'ordine di dichiarazione IF/ELSE (quando un caso non è mai consentito)
  • usando IFS multipli in C #, controllali tutti e se nessuno è vero, esegui una dichiarazione ELSE-?
  • se ELSE dichiara di unire tavolo sql
  • come usare echo insieme a shorthand IF, elseif ed ELSE
  • necessità di stampare una dichiarazione basata su una costrizione IF ed ELSE
  • se ELSE nella query sql