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

संग्रहित प्रक्रिया का उपयोग किए बिना n बार लूप करें

MySQL डॉक्स फ्लो कंट्रोल स्टेटमेंट पर कहना:

संग्रहीत कार्यक्रम और दृश्य पर दस्तावेज़ कहना:

कंपाउंड-स्टेटमेंट सिंटैक्स

तो, ऐसा लगता है कि आप केवल एक संग्रहीत कार्यविधि, फ़ंक्शन या ट्रिगर के भीतर एक स्पष्ट लूप चला सकते हैं।

आप अपने SQL कथन में जो करते हैं उसके आधार पर, संख्याओं की तालिका (या दृश्य) का उपयोग करना स्वीकार्य हो सकता है (mysql में "नंबर टेबल" बनाना , MYSQL:अनुक्रमिक संख्या तालिका )

अगर आपकी क्वेरी SELECT है और अपने SELECT . का परिणाम लौटाना ठीक है एक लंबे परिणाम सेट के 10 गुना (10 अलग परिणाम सेट के विपरीत) आप कुछ इस तरह कर सकते हैं:

SELECT MainQuery.*
FROM
    (
        SELECT 1 AS Number 
        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
        UNION ALL SELECT 10
    ) AS Numbers
    CROSS JOIN
    (
        SELECT 'some data' AS Result
    ) AS MainQuery

INSERT के लिए उदाहरण

मैं आपके डेटाबेस में संख्याओं की एक स्थायी तालिका रखने की सलाह देता हूं। यह कई मामलों में उपयोगी है। ऊपर दिए गए लिंक देखें कि इसे कैसे जेनरेट किया जाए।

इसलिए, यदि आपके पास एक तालिका है Numbers int . के साथ कॉलम Number 1 से मान के साथ, मान लें, 100K (जैसा मैं करता हूं), और इस कॉलम पर प्राथमिक कुंजी, फिर इस लूप के बजाय:

DECLARE count INT DEFAULT 0;
WHILE count < 10 DO
    INSERT INTO table_name(col1,col2,col3) 
    VALUES("val1","val2",count);

    SET count = count + 1;
END WHILE;

आप लिख सकते हैं:

INSERT INTO table_name(col1,col2,col3)
SELECT ("val1", "val2", Numbers.Number-1)
FROM Numbers
WHERE Numbers.Number <= 10;

यह भी लगभग 10 गुना तेजी से काम करेगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इकाई फ्रेमवर्क कोड पहले अधिकतम लम्बाई और निश्चित लम्बाई (चार बनाम वर्चर)

  2. यदि कोई रिकॉर्ड नहीं मिला तो मैसकल काउंट रिटर्न जीरो

  3. EF कोर - तालिका '*.__EFMigrationsHistory' मौजूद नहीं है

  4. कमांड लाइन इंटरफेस (सीएलआई) का उपयोग करके एक MySQL डेटाबेस कैसे बनाएं

  5. अद्यतन विवरण में दो तालिकाओं में कैसे शामिल हों?