2011-06-24 28 views
11

मूल रूप से, कौन सी सिंटेक्स मुझे शीर्षक विवरण प्राप्त करने की अनुमति देगी?एसक्यूएल अगर चयन कथन कोई पंक्ति नहीं देता है तो वैकल्पिक चयन कथन

If (select statement 1) returns 0 rows THEN (select statement 2) else (select statement 3) 

या तो बयान 2 या 3 से एसक्यूएल परिणाम प्रदान करती है मैं एक तरह से करने के लिए देखा है ऐसा करने के लिए कुछ भी नहीं है लेकिन मैंने पाया अब तक वास्तव में आवश्यकताओं को अगर पता करने के लिए लगता है ताकि।

+1

अजीब उद्देश्य। इसका भौतिक अर्थ क्या है? – heximal

+0

कौन सा आरडीबीएमएस? क्या आप इसे शुद्ध एसक्यूएल में या स्क्रिप्ट के हिस्से के रूप में करना चाहते हैं? – davek

+0

क्या आपका मतलब है "यदि पहले चयन से कोई पंक्ति नहीं है, तो 3 टेबल का उपयोग करने के बजाय, दूसरा चयन करें" ?? और सभी परिणाम एक ही आकार को सेट करते हैं (आप परिणामों को गतिशील रूप से नहीं बदलेंगे क्योंकि अनुबंध तब बदलता है।) – gbn

उत्तर

17
IF EXISTS (SELECT field FROM table) 
BEGIN 
SELECT field FROM table2 
END 
ELSE 
BEGIN 
SELECT field FROM table3 
END 
0

ये रहा ...

IF ((select count(*) from table1)= 0) 
BEGIN 
Select * from table2 
END 
ELSE 
BEGIN 
SELECT * from table3 
END 
+2

अधिकांश अनुकूलक एक मिलान पंक्ति के रूप में जल्द ही एक 'EXISTS' खंड का मूल्यांकन करने के लिए पर्याप्त स्मार्ट होते हैं। कुछ अनुकूलक यह समझने के लिए बहुत मूर्ख हैं कि आप 0 के विरुद्ध 'COUNT (*)' की तुलना करने की योजना बना रहे हैं, और गणना की गणना करने के लिए सभी पंक्तियों का मूल्यांकन करेंगे। –

+0

सहमत ... अगर 0 हम सभी की तुलना करना चाहते हैं; EXISTS सब कुछ समझ में आता है! अन्य मामलों की गिनती मदद कर सकती है। – Gans

1

प्रतिक्रिया की कमी के लिए क्षमा करें। कार्यालय में किसी और ने दिलचस्पी ली और इसके साथ आया:

select * from (
     select * 
       , (SELECT Count(*) 
        FROM users 
        WHERE version_replace = 59 AND moderated = 1) AS Counter 
      FROM users WHERE version_replace = 59 AND moderated in (0,1) 
    ) AS y 
where Counter = 0 and Moderated = 0 
    or Counter > 0 and Moderated = 1 
ORDER By ID DESC 

जो मुझे चाहिए वह करता है।

+0

थोड़ा जटिल लगता है, लेकिन यह आवश्यकताओं को फिट करता है ... – ChrisBint

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