SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
फ़ंक्शन json_each_text()
एक सेट रिटर्निंग फ़ंक्शन है, इसलिए आपको इसे एक पंक्ति स्रोत के रूप में उपयोग करना चाहिए। फ़ंक्शन का आउटपुट यहां है लेटरल रूप से शामिल
तालिका में q
, जिसका अर्थ है कि तालिका में प्रत्येक पंक्ति के लिए, प्रत्येक (key, value)
data
. से जोड़ी कॉलम को केवल उस पंक्ति से जोड़ा जाता है, इसलिए मूल पंक्ति और json
से बनी पंक्तियों के बीच संबंध वस्तु बनी रहती है।
तालिका q
एक बहुत ही जटिल उप-क्वेरी भी हो सकती है (या एक VALUES
खंड, जैसे आपके प्रश्न में)। फ़ंक्शन में, उस उप-क्वेरी के मूल्यांकन के परिणाम से उपयुक्त कॉलम का उपयोग किया जाता है, इसलिए आप उप-क्वेरी के उपनाम और उप-क्वेरी में (उपनाम) कॉलम के संदर्भ का उपयोग करते हैं।