2012-08-30 13 views
8

मैं WHERE खंड में स्थितियों के साथ डेटा पुनर्प्राप्त करना चाहता हूं।
यहाँ मेरी मेज कुछ की तरह लग रही है:जहां नेस्टेड एकाधिक स्थितियों के साथ खंड

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

WHERE खंड में मेरी शर्त है:

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

इस कोड काम करता है:
if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

मैं इस लक्ष्य को हासिल करने के लिए इस कोड को कोशिश कर रहा हूँ MySQL (see this SQLFiddle) के लिए ठीक है लेकिन SQL सर्वर (see this SQLFiddle) के लिए काम नहीं करता है और निम्न त्रुटि दे रहा है या:

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

कोई सुझाव?

+1

प्रश्न को कम करने का कोई कारण नहीं दिखता है। उपरोक्त :) – hgulyan

+0

मामले की आवश्यकता नहीं है –

+0

@NitinGoyal मेरी वास्तविक क्वेरी अलग और जटिल है। जहां मुझे 'केस' कथन का उपयोग करना है। मैंने इसे यहाँ दिखाया। – hims056

उत्तर

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

ओह। मेरे द्वारा बहुत छोटी गलती। वास्तव में मैं क्या चाहता था। – hims056

13

मुझे लगता है कि यह आप क्या हासिल करने की कोशिश कर रहे हैं

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

चेक SQLFiddle

अद्यतन:

प्रकरण बयान एक मान देता है, तो आप एक शर्त के अंदर नहीं हो सकता यह।

+0

हाँ सही। लेकिन क्या हम उदाहरण में दिखाए गए 'केस' कथन का उपयोग नहीं कर सकते हैं? – hims056

+0

मेरे अपडेट की जांच करें। – hgulyan

+0

हम 'WHERE' खंड में 'CASE' का उपयोग कर सकते हैं। पॉडिलुस्का द्वारा एक और जवाब देखें। – hims056

संबंधित मुद्दे