2017-04-18 9 views
5

चयन मैं इस तरह एक मेज है:रिकॉर्ड करें अगर कुछ मूल्य से मौजूद है, अगर नहीं, अन्य रिकॉर्ड

projectName | info 
-------------------- 
    all | i1 
    all | i2 
    all | i3 
    name1 | i4 
    name1 | i5 
    all | i6 

मैं एक प्रश्न है कि इस परियोजना का नाम की जांच करे। यदि यह तालिका में मौजूद है, तो मुझे केवल उस विशिष्ट परियोजना के बारे में जानकारी चुननी होगी। यदि यह अस्तित्व में नहीं है, तो मुझे 'सभी' परियोजनाओं के लिए जानकारी प्राप्त करनी होगी।

उदाहरण के लिए, अगर मैं अपनी प्रविष्टि 'name1' है, मेरे उत्पादन किया जाना चाहिए:

i4 
i5 

तो अपनी प्रविष्टि 'NAME2' है, मेरे उत्पादन किया जाना चाहिए:

i1 
i2 
i3 
i6 

वहाँ है एक तरीका मैं इसे एक mysql क्वेरी में कर सकता हूं? मैंने उदाहरणों की तलाश की लेकिन मुझे जो कुछ भी मिला वह दो अलग-अलग तालिकाओं से जानकारी प्राप्त करने के बारे में था।

+0

क्यों आप एक MySQL क्वेरी में यह करने के लिए की जरूरत है? यह आपके आवेदन के भीतर करना आसान होगा। –

+0

@ जेफरसनलिमा मैं वास्तव में इसके बारे में उत्सुक हो गया। अगर मैं इसे काम नहीं कर सकता तो मैं इसे अपने आवेदन में कर दूंगा। – Bizzys

उत्तर

4

एक तरह से UNION ALL उपयोग करने के लिए है:

SELECT info 
FROM mytable 
WHERE projectName = 'name1' 

UNION ALL 

SELECT info 
FROM mytable 
WHERE projectName = 'all' AND 
     NOT EXISTS (SELECT 1 
        FROM mytable 
        WHERE projectName = 'name1') 

Demo here

3
select * from projects 
where projectName = case when exists (select * from projects where projectName = 'name1') 
    then 'name1' 
    else 'all' 
end 
+0

लेकिन आप परियोजना की जानकारी – dsharew

+0

@dsharew के बजाय प्रोजेक्ट नाम आउटपुट कर रहे हैं मैं सभी कॉलम 'चयन * 'आउटपुट कर रहा हूं। आप अभी भी तालिका से इच्छित किसी भी कॉलम का चयन कर सकते हैं। –

+0

इसे बहुत अच्छा समाधान मिला – dsharew

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