अपडेट किया गया आप इसे SQL के साथ इस तरह कर सकते हैं
INSERT INTO branch_table (id, branch_id)
SELECT e.id, SUBSTRING_INDEX(SUBSTRING_INDEX(e.branch_ids, ',', n.n), ',', -1) branch_id
FROM eligibility_table e CROSS JOIN
(
SELECT a.N + b.N * 10 + 1 n
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) a
,(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) b
ORDER BY n
) n
WHERE n.n <= 1 + (LENGTH(e.branch_ids) - LENGTH(REPLACE(e.branch_ids, ',', '')))
ORDER BY id, branch_id
- एन के उपनाम के साथ उपश्रेणी इस विशेष मामले में
UNION ALL
का उपयोग करके 1 से 100 तक की संख्याओं (संख्याओं या मिलान तालिका) का अनुक्रम उत्पन्न करती है। औरCROSS JOIN
. कभी-कभी आपके डीबी में एक वास्तविक टैली टेबल रखना आसान होता है । - सबसे बाहरी चयन में
SUBSTRING_INDEX()
सूची और बाहरीSUBSTRING_INDEX()
में n'th तत्व तक सब कुछ प्राप्त करता है अंतिम सीमांकक के प्रभावी रूप से n-वें तत्व को स्वयं प्राप्त करने के बाद अधिकांश भाग निकालें। CROSS JOIN
हमें पंक्तियों का एक सेट तैयार करने की अनुमति देता है जो एक कार्टेशियन उत्पाद है (एन में 100 पंक्तियों और पात्रता_टेबल में सभी पंक्तियों में से)- स्थिति
WHERE
. में है क्लॉज परिणामसेट से सभी अनावश्यक पंक्तियों को फ़िल्टर करता है
नोट:यह क्वेरी 100 शाखा आईडी तक विभाजित हो जाएगी। अगर आपको कम या ज्यादा की जरूरत है तो आप आंतरिक सबक्वायरी को संपादित करके एक सीमा को समायोजित कर सकते हैं
शाखा_तालिका में परिणाम:
| ID | BRANCH_ID | ------------------ | 1 | 621 | | 1 | 622 | | 1 | 623 | | 1 | 625 | | 2 | 621 | | 2 | 650 |
यह रहा SQLFiddle डेमो