2012-08-30 17 views
8

Desidero recuperare i dati con le condizioni nella clausola WHERE.
Ecco il mio tavolo qualcosa di assomigliare:Clausola WHERE con più condizioni nidificate

Name Location Age 
---------------------- 
AAA  Bhuj  24 
BBB  Mumbai  22 
CCC  Bhuj  18 
DDD  Bhuj  27 
EEE  Mumbai  26 

La mia condizione in WHERE clausola:
if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

Sto provando questo codice per ottenere questo:

SELECT * FROM testing 
WHERE 
CASE Location WHEN 'Bhuj' THEN Age>20 
       WHEN 'Mumbai' THEN Age>25 
END; 

questo codice funziona va bene per MySQL (see this SQLFiddle) ma non funziona per SQL Server (see this SQLFiddle) e dando il seguente err oppure:

Incorrect syntax near '>'.: SELECT * FROM testing WHERE case Location When 'Bhuj' then Age>20 When 'Mumbai' then Age>25 end

Qualche suggerimento?

+1

Non vedo alcun motivo per sottopormare alla domanda. Votato :) – hgulyan

+0

caso non richiesto qui –

+0

@NitinGoyal La mia domanda effettiva è diversa e complessa. Dove devo usare la frase 'CASE'. L'ho mostrato semplicemente qui. – hims056

risposta

6
SELECT * FROM testing 
WHERE 
Age > case Location When 'Bhuj' then 20 
       When 'Mumbai' then 25 
       end 
+0

Oh. errore molto banale da parte mia. Esattamente quello che volevo. – hims056

13

credo che questo è quello che stai cercando di raggiungere

SELECT * 
    FROM testing 
    WHERE (Location = 'Bhuj' AND Age>20) 
     OR (Location = 'Mumbai' AND Age>25) 

check SQLFiddle

UPDATE:

istruzione Case restituisce un valore, non si può avere una condizione interna esso.

+0

Sì, corretto. Ma non possiamo usare l'istruzione 'CASE' che ho mostrato nell'esempio? – hims056

+0

Controlla il mio aggiornamento. – hgulyan

+0

Possiamo usare 'CASE' nella clausola' WHERE'. Guarda un'altra risposta di podiluska. – hims056