2010-06-20 12 views
5

आप जानते हैं कि आप इस तरह के SQL कथन में वापसी मूल्य पर एक अस्थायी कॉलम नाम कैसे असाइन कर सकते हैं?तालिका से AS temp_name का चयन करें जहां temp_name = कुछ?

SELECT something+this+that AS myvalue FROM mytable 

यह एक सशर्त रूप में अस्थायी नाम myvalue उपयोग करने के लिए संभव है?

SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10 

मुझे ऐसा करने के लिए वाक्यविन्यास का पता लगाना प्रतीत नहीं होता है। एक ही रास्ता मैं पता लगा सकते हैं कैसे करना है यह इस तरह फिर से संपूर्ण स्तंभ परिभाषा बाहर के पुनर्लेखन के लिए है:

SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10 

जाहिर है ऊपर के उदाहरण एक छोटी सी उदाहरण है। मेरी क्वेरी मुझे इसे करने की ज़रूरत है बेहद जटिल है, इसलिए प्रत्येक सशर्त के लिए प्रत्येक लौटाई कॉलम परिभाषा को फिर से लिखना काफी परेशानी होगी।

तो वैसे भी, इसके लिए वाक्यविन्यास क्या है? क्या यह संभव है?

+0

कौन सा संस्करण? –

उत्तर

7

एक व्युत्पन्न तालिका का उपयोग करें ...

SELECT 
    myvalue 
FROM 
    (
    SELECT something+this+that AS myvalue FROM mytable 
    ) foo 
WHERE 
    myvalue = 10 

या एक CTE जो और अधिक सुरुचिपूर्ण लग रहा है, लेकिन एक ही

;WITh myCTE AS 
(
    SELECT something+this+that AS myvalue FROM mytable 
) 
SELECT 
    myvalue 
FROM 
    myCTE 
WHERE 
    myvalue = 10 

या एक गणना स्तंभ है, इसलिए यह सामान्य रूप से प्रयोग करने योग्य है

ALTER TABLE MyTable ADD myvalue AS something+this+that 
का उपयोग
0

मुझे नहीं लगता कि यह संभव है, लेकिन आप डेटा को एक अस्थायी तालिका में डालकर धोखा दे सकते हैं, और फिर शेष चलाने के लिए दूसरी क्वेरी चला सकते हैं।

वह, या गतिशील एसक्यूएल, लेकिन मैं उत्तरार्द्ध का प्रशंसक नहीं हूं।

-1

कुछ चुनें + यह + कि mytable से myvalue के रूप में myvalu ई = 10

आप ऐसा ही कुछ की कोशिश कर सकते: SQL सर्वर के

SELECT something+this+that AS myvalue 
FROM `users` 
HAVING myvalue=10; 
संबंधित मुद्दे