MySQL में INFORMATION_SCHEMA से रैंडम टेबल नाम प्राप्त करना
INFORMATION_SCHEMA.TABLES टेबल में डेटाबेस की सभी टेबल की मेटाडेटा होती है। ORDER BY RAND() और LIMIT का उपयोग करके आप रैंडम टेबल नाम प्राप्त कर सकते हैं।
सिंटैक्स
SELECT TABLE_NAME AS anyAliasName FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDatabaseName' ORDER BY RAND() LIMIT yourLimitNumber;
उदाहरण: 'web' डेटाबेस से 4 रैंडम टेबल
SELECT TABLE_NAME AS Random4TableName FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'web' ORDER BY RAND() LIMIT 4;
संभावित आउटपुट:
+------------------+ | Random4TableName | +------------------+ | demotable474 | | demotable313 | | demotable452 | | demotable382 | +------------------+
महत्वपूर्ण नोट्स
TABLE_SCHEMA— आपके डेटाबेस का नामORDER BY RAND()— परिणामों को रैंडम क्रम में व्यवस्थित करता हैLIMIT 4— केवल 4 पंक्तियां लौटाता है- बहुत बड़ी संख्या में टेबल होने पर
ORDER BY RAND()धीमा हो सकता है
बड़े डेटाबेस के लिए बेहतर विकल्प
यदि टेबल हजारों में हैं, तो ORDER BY RAND() प्रदर्शन समस्या पैदा कर सकता है। विकल्प:
-- रैंडम ऑफसेट की गणना करें SELECT COUNT(*) INTO @total FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'web'; SET @offset = FLOOR(RAND() * @total); SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'web' LIMIT 4 OFFSET @offset;
यह तरीका बड़े डेटासेट के लिए बहुत तेज़ है।