मुझे आश्चर्य है कि SQLite में लंबे से विस्तृत प्रारूप से डेटा को परिवर्तित करने के लिए एक कैननिकल तरीका है (क्या यह ऑपरेशन आम तौर पर संबंधपरक डेटाबेस के डोमेन में होता है?)। मैंने MySQL के लिए this example का पालन करने का प्रयास किया लेकिन मुझे लगता है कि SQLite के पास समान नहीं है ... धन्यवाद!SQLite लंबे प्रारूपों के लिए लंबे समय तक?
11
A
उत्तर
12
IF
एक गैर-मानक MySQL एक्सटेंशन है। हमेशा CASE
का उपयोग करना बेहतर है जो मानक एसक्यूएल है और SQLite और MySQL (और MSSQL, Oracle, Postgres, Access, Sybase ... और चालू) सहित सभी अनुपालन डेटाबेस में काम करता है।
यहाँ कैसे CASE
के साथ एक ही क्वेरी करने के लिए की एक उदाहरण है:
SELECT Country,
MAX(CASE WHEN Key = 'President' THEN Value ELSE NULL END) President,
MAX(CASE WHEN Key = 'Currency' THEN Value ELSE NULL END) Currency
FROM Long
GROUP BY Country
ORDER BY Country;
यहाँ एक और तरीका मिलती है का उपयोग करते हुए एक ही क्वेरी प्रतिनिधित्व करने के लिए है। मुझे लगता है कि यह शायद अधिक कुशल है, लेकिन यह मानता है कि प्रत्येक समूह के भीतर प्रत्येक कुंजी मान के लिए केवल एक रिकॉर्ड है (CASE
संस्करण भी करता है, लेकिन यदि यह सत्य नहीं है, तो कम से कम अनुमानित परिणाम) अतिरिक्त पंक्तियों का नतीजा नहीं होगा।
SELECT
D.Country,
P.Value President,
C.Value Currency
FROM
(
SELECT DISTINCT Country
FROM Long
) D
INNER JOIN
( SELECT Country, Value
FROM Long
WHERE Key = 'President'
) P
ON
D.Country = P.Country
INNER JOIN
( SELECT Country, Value
FROM Long
WHERE Key = 'Currency'
) C
ON
D.Country = C.Country
ORDER BY
D.Country;
और रिकार्ड के लिए, यहाँ DDL है और परीक्षण डाटा मैं उपयोग कर रहा था:
CREATE TABLE Long (ID INTEGER PRIMARY KEY AUTOINCREMENT, Country TEXT, Key TEXT, Value TEXT);
INSERT INTO Long VALUES (NULL, 'USA', 'President', 'Obama');
INSERT INTO Long VALUES (NULL, 'USA', 'Currency', 'Dollar');
INSERT INTO Long VALUES (NULL, 'China', 'President', 'Hu');
INSERT INTO Long VALUES (NULL, 'China', 'Currency', 'Yuan');
संबंधित मुद्दे
- 1. लंबे समय तक XMLGregorian कैलेंडर और लंबे समय तक
- 2. क्या लंबे और लंबे समय तक पूर्णांक
- 3. लंबे समय तक
- 4. लंबे समय तक लाइनों()
- 5. जावा लंबे समय तक बाइनरी
- 6. बिटवाई "और" लंबे समय तक?
- 7. लंबे समय तक आइटम हटाएं
- 8. जावा: लंबे समय तक टिमस्टैम्प
- 9. लंबे समय तक कास्ट करें
- 10. INT_MIN के मान को लंबे समय तक
- 11. सबसे लंबे समय तक गैर-ओवरलैपिंग सबस्ट्रिंग
- 12. सबसे लंबे समय तक सामान्य उपसर्ग ऐरे
- 13. सबसे लंबे समय तक बढ़ने वाले सब्सक्रिप्शन
- 14. स्ट्रिंग को लंबे समय तक परिवर्तित करें
- 15. लंबे समय तक एचडब्ल्यूएनडी (वीएस 8 सी ++)
- 16. MySQL अपडेट (भी) लंबे समय तक लेना
- 17. jQuery और लंबे समय तक पूर्णांक आईडी
- 18. नेटवर्क: सबसे लंबे समय तक मिलान
- 19. लेखन लंबे समय तक मतदान डब्ल्यूसीएफ सेवा
- 20. सबसे लंबे समय तक बार-बार-स्ट्रिंग
- 21. जावा कनवर्टिंग लंबे समय तक मुद्रा में
- 22. MySQL सॉर्टिंग परिणाम लंबे समय तक
- 23. लंबे समय तक प्रेस करें एंड्रॉइड
- 24. टाइप ऑब्जेक्ट से लेकर लंबे समय तक
- 25. लंबे समय तक अपवाद सूची के लिए जावा शैली
- 26. लंबे समय तक एक जोड़ी के लिए हैश फ़ंक्शन?
- 27. स्ट्रिंग को लंबे समय तक परिवर्तित करने के लिए
- 28. हस्ताक्षरित लंबे लंबे
- 29. लंबे समय से पुनर्निर्माण
- 30. आयात एक लंबे समय
बहुत उपयोगी !! धन्यवाद - मुझे आपका दूसरा उदाहरण ग्रोक करने के लिए और अधिक समय चाहिए लेकिन यह वास्तव में मेरे एसक्यूएल ज्ञान का विस्तार करता है! – hatmatrix