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

MySQL 5.7 . में JSON सरणी के अंदर अद्वितीय/विशिष्ट तत्व कैसे प्राप्त करें

MySQL में JSON सरणी से अलग मान प्राप्त करने का कोई सीधा तरीका नहीं है। एक तरीका यह हो सकता है कि सीक्वेंस/नंबर जेनरेटर टेबल कॉन्सेप्ट का उपयोग करें . इस अनुक्रम तालिका का उपयोग व्युत्पन्न तालिका (सबक्वेरी) के रूप में किया जा सकता है, या आप अपने डेटाबेस में संख्याओं को संग्रहीत करने वाली एक स्थायी तालिका बना सकते हैं।

फिर हम इस अनुक्रम तालिका का उपयोग JSON_EXTRACT() पहली कुंजी, दूसरी कुंजी, तीसरी कुंजी आदि पर सरणी से मान। एक बार जब हम अलग-अलग पंक्तियों में मान निकाल लेते हैं, तो हम बस DISTINCT . का उपयोग कर सकते हैं उनमें से अद्वितीय मूल्य प्राप्त करने के लिए। बाद में, हम JSON_ARRAYAGG() JSON सरणी के रूप में इन अद्वितीय मानों को फिर से एकत्रित करने के लिए कार्य करता है।

स्कीमा (MySQL v5.7)

SET @json = '["a", "b", "b", "a", "c"]';

क्वेरी

SELECT Json_arrayagg(dt.val) AS unq_json_array
FROM   (SELECT DISTINCT Json_extract(@json, Concat('$[', seq.n, ']')) AS val
        FROM   (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL
                SELECT 2 UNION ALL SELECT 3 UNION ALL 
                SELECT 4 UNION ALL SELECT 5 UNION ALL
                SELECT 6 UNION ALL SELECT 7 UNION ALL
                SELECT 8 UNION ALL SELECT 9) AS seq) AS dt
WHERE  dt.val IS NOT NULL;

परिणाम

| unq_json_array  |
| --------------- |
| ["a", "b", "c"] |

डीबी फिडल पर देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कस्टम MySQL NHibernate बैचर को कैसे कॉन्फ़िगर करें?

  2. वर्डप्रेस mysql सर्वर से कनेक्ट नहीं हो सकता

  3. स्पार्क एसक्यूएल/हाइव क्वेरी में शामिल होने के साथ हमेशा के लिए लेता है

  4. क्वेरी के परिणाम को MySQL में एक वेरिएबल पर सेट करें

  5. मैं पंक्तियों को बार-बार कॉलम आधारित डेटा में कैसे बदल सकता हूं?