आप इसे substring_index()
के साथ कर सकते हैं . निम्नलिखित क्वेरी आपकी सबक्वेरी के रूप में उपयोग करती है और फिर इस तर्क को लागू करती है:
select Name, ISOCode_2,
substring_index(currencies, ',', 1) as Currency1,
(case when numc >= 2 then substring_index(substring_index(currencies, ',', 2), ',', -1) end) as Currency2,
(case when numc >= 3 then substring_index(substring_index(currencies, ',', 3), ',', -1) end) as Currency3,
(case when numc >= 4 then substring_index(substring_index(currencies, ',', 4), ',', -1) end) as Currency4,
(case when numc >= 5 then substring_index(substring_index(currencies, ',', 5), ',', -1) end) as Currency5,
(case when numc >= 6 then substring_index(substring_index(currencies, ',', 6), ',', -1) end) as Currency6,
(case when numc >= 7 then substring_index(substring_index(currencies, ',', 7), ',', -1) end) as Currency7,
(case when numc >= 8 then substring_index(substring_index(currencies, ',', 8), ',', -1) end) as Currency8
from (SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currencies,
count(*) as numc
FROM country
INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
GROUP BY country.name
) t
व्यंजक substring_index(currencies, ',' 2)
मुद्राओं में सूची को दूसरे तक ले जाता है। अमेरिकन सोमोआ के लिए, वह 'US Dollar,Kwanza'
. होगा . अगली कॉल -1
. के साथ जैसा कि तर्क सूची के अंतिम तत्व को लेता है, जो कि 'Kwanza'
. होगा , जो currencies
. का दूसरा तत्व है ।
यह भी ध्यान दें कि SQL क्वेरीज़ कॉलम का एक अच्छी तरह से परिभाषित सेट लौटाती हैं। एक क्वेरी में स्तंभों की एक चर संख्या नहीं हो सकती (जब तक कि आप prepare
के माध्यम से डायनेमिक SQL का उपयोग नहीं कर रहे हैं बयान)।