2013-02-16 9 views
5

मैं किसी तालिका की उपसमूहों के लिए एक दृश्य की संख्या को बढ़ाना चाहते हैं, लेकिन अगर उपसमूह तो मौजूद नहीं है अनुक्रम 1 साथ शुरू करना चाहिए:SQLite: एक अधिकतम उप क्वेरी के लिए डिफ़ॉल्ट मान सेट करना है, तो परिणाम शून्य है

उदाहरण के लिए, निम्नलिखित में, हम class=5 के साथ तालिका में कोई रिकॉर्ड मौजूद नहीं होने पर अनुक्रम को 1 पर सेट करना चाहते हैं; अगर वहाँ इस तरह के रिकॉर्ड मौजूद है, तो अनुक्रम + 1 (उपसमूह class=5 में) मूल्य अधिकतम अनुक्रम लेना चाहिए:

update order set class=5, sequence=(select max(sequence) from order 
where class=5)+1 where order_id=104; 

समस्या है ऊपर प्रारंभिक मामले के लिए काम नहीं करता।

उत्तर

6

इन स्थितियों में से अपनी क्वेरी के चारों ओर, समारोह COALESCE() बहुत आसान आता है:

UPDATE order 
SET class = 5, 
    sequence = coalesce(
     (SELECT max(sequence) 
     FROM order 
     WHERE class=5), 
     0 
    ) + 1 
WHERE order_id = 104 

एक और अच्छी बात COALESCE के बारे में है कि यह सबसे अन्य द्वारा समर्थित है एसक्यूएल इंजन - MySQL, Postgres, आदि ...

+0

एचएम, एक अपवर्तनीय लायक है, बी "सबसे अधिक काम करता है" के पारिस्थितिकी ... मेरे भयानक स्वयं हमेशा googles "एनवीएल एसक्यूएल इंजन इंजन विकल्प" ;-) – Najzero

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

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