दिलचस्प पोस्ट
विंडोज 8 में एनपीएम पथ फिक्सिंग ओरेकल में उपयोगकर्ता और एक स्कीमा के बीच का अंतर? फ़ाइल सहेजें पर Intellij reformat एक HTML फ़ाइल में एक और HTML फ़ाइल शामिल करें क्या जावास्क्रिप्ट से सर्वर को पिंग करना संभव है? स्ट्रिंग के रूप में अपने कच्चे एसक्यूएल क्वेरी को आउटपुट करने के लिए मैं क्वेरी बिल्डर कैसे प्राप्त करूं? ओपनएसएल मैक ओएस एक्स एल कैप्टन के नवीनतम संस्करण को कैसे स्थापित करें I इरोटोथिनेस द्वारा प्रधान संख्याएं एक साथ तुलना में तेज अनुक्रमिक हैं? मैं एक अंतरफलक में स्थिर तरीके क्यों नहीं घोषित कर सकता हूं? कैसे एक बास स्क्रिप्ट में बहस को पुनरावृति करना अपाचे को www से www से पुनर्निर्देशित करें HTML पढ़ते समय एक JEditorPane में ForegroundActions लागू असंगत प्रदर्शन एंड्रॉइड डाटाबेस एन्क्रिप्शन पीएचपी पृष्ठों पर फॉर्म भेजने से बचें सी # 3.0+ में संपत्ति और फ़ील्ड के बीच का अंतर

मैं MySQL में एक पंक्ति जनरेटर कैसे बनाऊँ?

क्या एक ऐसी पंक्तियों की एक मनमाना संख्या उत्पन्न करने का एक तरीका है जो ओरेकल वाक्यविन्यास के समान JOIN में उपयोग किया जा सकता है:

SELECT LEVEL FROM DUAL CONNECT BY LEVEL<=10 

वेब के समाधान से एकत्रित समाधान "मैं MySQL में एक पंक्ति जनरेटर कैसे बनाऊँ?"

यह कहने के लिए नफरत है, लेकिन MySQL में केवल चार बड़े RDBMS के RDBMS हैं जिनके पास यह सुविधा नहीं है।

Oracle :

 SELECT * FROM dual CONNECT BY level < n 

MS SQL ( 100 पंक्तियों तक) में:

 WITH hier(row) AS ( SELECT 1 UNION ALL SELECT row + 1 FROM hier WHERE row < n ) SELECT * FROM hier 

या 32768 तक संकेत का उपयोग कर

 WITH hier(row) AS ( SELECT 1 UNION ALL SELECT row + 1 FROM hier WHERE row < 32768 ) SELECT * FROM hier OPTION (MAXRECURSION 32767) -- 32767 is the maximum value of the hint 

PostgreSQL :

 SELECT * FROM generate_series (1, n) 

MySQL , कुछ भी नहीं

MySQL में, यह मेरी समझ में है कि आप किसी तालिका के साथ एक पंक्ति से अधिक एक पंक्ति (या ड्यूएलएल) प्राप्त कर सकते हैं।

इसलिए, कई पंक्तियां प्राप्त करने के लिए, आपको वास्तविक या अस्थायी तालिका की आवश्यकता होती है जिसमें कम से कम आवश्यक पंक्तियों की संख्या होती है।

हालांकि, आपको अस्थायी तालिका बनाने की आवश्यकता नहीं है क्योंकि आप किसी मौजूदा तालिका का उपयोग कर सकते हैं जिसमें कम से कम आवश्यक पंक्तियों की संख्या है। इसलिए, यदि आपके पास कम से कम आवश्यक पंक्तियों की एक मेज है, तो इसका उपयोग करें:

 SELECT @curRow := @curRow + 1 AS row_number FROM sometable JOIN (SELECT @curRow := 0) r WHERE @curRow<100; 

बस कम से कम पंक्तियों की अपेक्षित संख्या के साथ आपकी किसी तालिका के नाम के साथ "कुछ देर" की जगह ले लीजिए

पुनश्च: "आर" एक तालिका "उपनाम" है: मैं "एएस आर" का इस्तेमाल कर सकता था किसी FROM या JOIN क्लॉज़ में कोई सबक्व्यूरी "व्युत्पन्न तालिका" बनाता है, जो कि सभी तालिकाओं के साथ, एक नाम या उपनाम होना चाहिए। (MySql पुस्तिका देखें: 13.2.9.8। एफओआर खंड में उपश्रेणियाँ)

क्या आपने एक बाएं OUTER जुड़ने पर विचार किया है?

मुझे नहीं पता है कि यह मदद करता है, लेकिन आप प्रत्येक चयन बयान से sth के नंबर की संख्या कर सकते हैं। पसंद:

SET @NUM = 0;

SELECT @NUM: = @ NUM + 1 पंक्ति संख्या, * से …

और बाद में उन्हें इस एक पर शामिल हो। बड़े डेटाबेस में यह बहुत धीमा हो सकता है

अगर मैं आप को समझ रहा हूँ, तो आप संकाय संख्याओं की सूची चाहते हैं?

बस सूची बनाओ:

 create table artificial_range (id int not null primary key auto_increment, idn int); insert into artificial_range (idn) values (0); --first row insert into artificial_range(idn) select idn from artificial_range; --2nd insert into artificial_range(idn) select idn from artificial_range; -- now 4 rows insert into artificial_range(idn) select idn from artificial_range; --8 insert into artificial_range(idn) select idn from artificial_range; --16 insert into artificial_range(idn) select idn from artificial_range; --32 insert into artificial_range(idn) select idn from artificial_range; --64 insert into artificial_range(idn) select idn from artificial_range; --128 

… आदि, जब तक आपके पास नहीं, कहते हैं, 1024।

 update artificial_range set idn = id - 1 ; 

– अब आपके पास 1 (आईडी) पर एक श्रृंखला है और एक श्रृंखला 0 से शुरू होती है

अब इसमें शामिल हों, या इसके परिवर्तनों में शामिल हों:

  create view days_this_century as select date_add('2000-01-01', interval a.idn day) as cdate from artificial_range; 

मेरे पास एक स्तंभ ( c5 ) वाला एक टेबल था जिसमें एक नंबर x था, मुझे एक एसक्यूएल अभिव्यक्ति की आवश्यकता थी जो उसी पंक्ति x संख्या को बार-बार दोहराई।

मेरा टेबल ए निहित है:

 c1 c2 c3 c4 c5 16 1 2 16 3 16 1 2 17 2 16 1 2 18 1 

और मैं चाहता था:

 c1 c2 c3 c4 c5 n 16 1 2 16 3 1 16 1 2 16 3 2 16 1 2 16 3 3 16 1 2 17 2 1 16 1 2 17 2 2 16 1 2 18 1 1 

मैंने उस अभिव्यक्ति के साथ हल किया:

 SELECT c1, c2, c3, c4, c5, row_number AS n FROM ( SELECT @curRow := @curRow + 1 AS row_number FROM tablea JOIN (SELECT @curRow := 0) r WHERE @curRow < ( SELECT max(field1) FROM tablea ) ) AS vwtable2 LEFT JOIN tablea d ON vwtable2.row_number <= tablea.field1;