Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अज्ञात कुंजियों के साथ JSON को MySQL JSON_TABLE के साथ पंक्तियों में विस्तारित करें

आप ROW_NUMBER() . का उपयोग करके enumarete का उपयोग कर सकते हैं विंडो फ़ंक्शन JSON_KEYS() . के उपयोग के माध्यम से मुख्य मान निर्धारित करते समय , और फिर JSON_EXTRACT() . का उपयोग करके संबंधित कुंजियों को निकालें सरणियों से हमें जैसे कि

. मिला
WITH k AS
(
SELECT *, 
       ROW_NUMBER() OVER(PARTITION BY `jsdata` ORDER BY value DESC) AS rn,
       JSON_KEYS(`jsdata`) AS jk
  FROM `tab` AS t
  JOIN JSON_TABLE(`jsdata`,'$.*' COLUMNS (value INT PATH '$')) j
)
SELECT JSON_UNQUOTE(JSON_EXTRACT(jk, CONCAT('$[',rn-1,']'))) AS "key", 
       value
  FROM k

या निम्नलिखित क्वेरी को अधिक सरल होने के रूप में उपयोग करें

SELECT JSON_UNQUOTE(
       JSON_EXTRACT(JSON_KEYS(`jsdata`), 
                    CONCAT('$[',
                    ROW_NUMBER() OVER(PARTITION BY `jsdata` ORDER BY value DESC)-1,
                    ']'))
                   ) AS "key", value
  FROM `tab` AS t
  JOIN JSON_TABLE(`jsdata`,'$.*' COLUMNS (value INT PATH '$')) j

डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएचपी पीडीओ:कनेक्ट करने में असमर्थ, अमान्य कैटलॉग नाम

  2. टर्मिनल में सबसे अच्छा प्रदर्शन कैसे करें एक MySQL चयन बहुत सारे फ़ील्ड लौटा रहा है?

  3. Mysql में अभी () से अगले 7 दिनों तक के रिकॉर्ड दिखाएं

  4. MySQL:#126 - तालिका के लिए गलत कुंजी फ़ाइल

  5. मेकटाइम () उदाहरण – MySQL