Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ORDER BY RAND() LIMIT 1 से यादृच्छिक रिकॉर्ड चुनें

MySQL में ORDER BY RAND() LIMIT 1 का उपयोग करके टेबल से एक यादृच्छिक पंक्ति चुन सकते हैं।

सिंटैक्स

SELECT * FROM टेबल_नाम ORDER BY RAND() LIMIT 1;

उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable1581 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20)
    -> );

2. डेटा डालें

mysql> INSERT INTO DemoTable1581(StudentName) VALUES('Chris'), ('Bob'), ('Sam'), ('Mike'), ('Carol');

3. यादृच्छिक पंक्ति चुनें

mysql> SELECT * FROM DemoTable1581 ORDER BY RAND() LIMIT 1;

4. परिणाम (उदाहरण)

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 4         | Mike        |
+-----------+-------------+

कैसे काम करता है

  • RAND() प्रत्येक पंक्ति के लिए 0 से 1 के बीच यादृच्छिक फ्लोट देता है
  • ORDER BY RAND() पंक्तियों को यादृच्छिक क्रम में फेरबदल करता है
  • LIMIT 1 पहली पंक्ति लेता है

प्रदर्शन चेतावनी

बड़े टेबल पर बहुत धीमा - पूर्ण टेबल स्कैन + फाइलसॉर्ट + अस्थायी टेबल।

पंक्तियांप्रदर्शन
< 1,000स्वीकार्य
1,000 - 10,000धीमा
> 10,000बहुत धीमा (टालें)

बड़े टेबल के लिए कुशल विकल्प

विधि 1: MAX ID + RAND (यदि ID क्रमिक)

SELECT * FROM DemoTable1581
WHERE StudentId >= (SELECT FLOOR(RAND() * (SELECT MAX(StudentId) FROM DemoTable1581)))
ORDER BY StudentId LIMIT 1;

विधि 2: दो क्वेरी (एप्लिकेशन लेवल)

-- 1. गिनती प्राप्त करें
SELECT COUNT(*) FROM DemoTable1581;  -- मान लें 100000

-- 2. एप्लिकेशन में यादृच्छिक ऑफसेट उत्पन्न करें (0-99999)
-- 3. OFFSET के साथ क्वेरी
SELECT * FROM DemoTable1581 LIMIT 1 OFFSET 45231;

विधि 3: यादृच्छिक कॉलम जोड़ें

ALTER TABLE DemoTable1581 ADD COLUMN rand_sort DOUBLE;
UPDATE DemoTable1581 SET rand_sort = RAND();
CREATE INDEX idx_rand ON DemoTable1581(rand_sort);

-- फिर तेज़ क्वेरी
SELECT * FROM DemoTable1581 ORDER BY rand_sort LIMIT 1;

नमूना आकार > 1 के लिए

SELECT * FROM DemoTable1581 ORDER BY RAND() LIMIT 10;
  1. - डेटाबेस से MySQL व्यू को कैसे ड्रॉप करें?

    DROP VIEW स्टेटमेंट की सहायता से, हम डेटाबेस से MySQL व्यू को ड्रॉप कर सकते हैं। इसका वाक्यविन्यास निम्न होगा: वाक्यविन्यास DROP VIEW [IF EXISTS] view_name; यहाँ view_name उस व्यू का नाम है जिसे हम डेटाबेस से हटाना चाहते हैं। उदाहरण मान लीजिए यदि हम info_less नामक व्यू को ड्रॉप करना चाहते हैं तो निम

  1. - एक MySQL डेटाबेस से दूसरे में टेबल कैसे कॉपी करें

    एक डेटाबेस से दूसरे में टेबल कॉपी करने का निम्नलिखित सिंटैक्स है। INSERT INTO yourDestinationDatabaseName.yourTableName SELECT * from yourSourceDatabaseName.yourtableName; आइए एक उदाहरण देखते हैं। CREATE कमांड का उपयोग business डेटाबेस में एक टेबल बनाने के लिए किया जाता है। हम यहां एक नई टेबल बना र

  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर