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"] |