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

पंक्तियों में विभाजित (विस्फोट) अल्पविराम सीमांकित स्तंभ मान

अपडेट किया गया आप इसे 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 डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DISTINCT केवल पहले चार नंबर चुनें

  2. MySQL को अवांछित पंक्तियों को हटाने के लिए SQL को परिभाषित करने में मदद चाहिए

  3. डेटाबेस में छवि पथ और नाम कैसे अपलोड करें - कोडनिर्देशक

  4. आंकड़ों को अपडेट करने में बिना किसी अंतराल और त्रुटि के MySQL डेटा अपडेटिंग/स्टोरिंग का उपयोग करने का सही तरीका

  5. MySQL केस स्टेटमेंट के साथ जुड़ता है