मारियाडीबी में, ROWNUM()
एक अंतर्निहित फ़ंक्शन है जो वर्तमान संदर्भ में स्वीकृत पंक्तियों की वर्तमान संख्या देता है। इसका मुख्य उद्देश्य ROWNUM
. का अनुकरण करना है Oracle में छद्म स्तंभ।
ROWNUM()
इस तरह से उपयोग किया जा सकता है जिसका LIMIT
. के समान प्रभाव हो खंड - किसी क्वेरी द्वारा लौटाए गए परिणामों की संख्या को सीमित करने के लिए।
Oracle मोड में होने पर, इसे ROWNUM
. कहा जा सकता है (अर्थात कोष्ठक के बिना)।
ROWNUM()
फ़ंक्शन मारियाडीबी 10.6.1 से समर्थित है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
ROWNUM()
किसी तर्क की आवश्यकता नहीं है, या स्वीकार नहीं किया गया है।
जब Oracle मोड में, इसे बिना कोष्ठक के कहा जा सकता है, जैसे:
ROWNUM
इस सिंटैक्स का उपयोग करना ROWNUM
. की नकल करता है Oracle में छद्म स्तंभ।
उदाहरण
आइए एक क्वेरी चलाते हैं जो Pets
. नामक तालिका से सभी पंक्तियों को लौटाती है :
SELECT
ROWNUM(),
PetId,
PetName
FROM Pets;
परिणाम:
+----------+-------+---------+ | ROWNUM() | PetId | PetName | +----------+-------+---------+ | 1 | 1 | Fluffy | | 2 | 2 | Fetch | | 3 | 3 | Scratch | | 4 | 4 | Wag | | 5 | 5 | Tweet | | 6 | 6 | Fluffy | | 7 | 7 | Bark | | 8 | 8 | Meow | +----------+-------+---------+ 8 rows in set (0.001 sec)
हम देख सकते हैं कि आठ पंक्तियों को वापस कर दिया गया था।
ROWNUM()
. द्वारा दिया गया मान प्रत्येक पंक्ति के साथ कार्य वृद्धि। इस मामले में, यह PetId
. में मानों के साथ मेल खाता है कॉलम, लेकिन यह विशुद्ध रूप से संयोग है। PetId
कॉलम किसी भी मान का उपयोग कर सकता था, लेकिन ROWNUM()
यहां जैसा है वैसा ही रहेगा।
मेरा मतलब स्पष्ट करने के लिए, आइए कम परिणाम देने के लिए क्वेरी को परिशोधित करें:
SELECT
ROWNUM(),
PetId,
PetName
FROM Pets
WHERE PetId > 4;
परिणाम:
+----------+-------+---------+ | ROWNUM() | PetId | PetName | +----------+-------+---------+ | 1 | 5 | Tweet | | 2 | 6 | Fluffy | | 3 | 7 | Bark | | 4 | 8 | Meow | +----------+-------+---------+ 4 rows in set (0.010 sec)
लौटाई गई पंक्तियों को सीमित करना
जैसा कि बताया गया है, ROWNUM()
इस तरह से उपयोग किया जा सकता है जिसका LIMIT
. के समान प्रभाव हो खंड - किसी क्वेरी द्वारा लौटाए गए परिणामों की संख्या को सीमित करने के लिए।
यहां एक उदाहरण दिया गया है:
SELECT
ROWNUM(),
PetId,
PetName
FROM Pets
WHERE ROWNUM() <= 5;
परिणाम:
+----------+-------+---------+ | ROWNUM() | PetId | PetName | +----------+-------+---------+ | 1 | 1 | Fluffy | | 2 | 2 | Fetch | | 3 | 3 | Scratch | | 4 | 4 | Wag | | 5 | 5 | Tweet | +----------+-------+---------+ 5 rows in set (0.001 sec)
यहां बताया गया है कि कैसे हम LIMIT
. का उपयोग करके समान प्रभाव प्राप्त करेंगे खंड:
SELECT
ROWNUM(),
PetId,
PetName
FROM Pets
LIMIT 5;
परिणाम:
+----------+-------+---------+ | ROWNUM() | PetId | PetName | +----------+-------+---------+ | 1 | 1 | Fluffy | | 2 | 2 | Fetch | | 3 | 3 | Scratch | | 4 | 4 | Wag | | 5 | 5 | Tweet | +----------+-------+---------+ 5 rows in set (0.001 sec)
LIMIT
. का उपयोग करने में अंतर है और ROWNUM()
लौटाई गई पंक्तियों को सीमित करने के लिए।
मुख्य अंतर यह है कि LIMIT
ROWNUM
. के दौरान परिणाम सेट पर काम करता है स्वीकृत पंक्तियों की संख्या पर काम करता है (किसी भी ORDER
. से पहले या GROUP BY
खंड)।
यहां एक उदाहरण दिया गया है जो इस अंतर को प्रदर्शित करता है:
SELECT
ROWNUM(),
PetId,
PetName
FROM Pets
WHERE ROWNUM() <= 5
ORDER BY PetId Desc;
परिणाम:
+----------+-------+---------+ | ROWNUM() | PetId | PetName | +----------+-------+---------+ | 5 | 5 | Tweet | | 4 | 4 | Wag | | 3 | 3 | Scratch | | 2 | 2 | Fetch | | 1 | 1 | Fluffy | +----------+-------+---------+ 5 rows in set (0.129 sec)
और यहाँ यह LIMIT
. का उपयोग कर रहा है खंड:
SELECT
ROWNUM(),
PetId,
PetName
FROM Pets
ORDER BY PetId Desc
LIMIT 5;
परिणाम:
+----------+-------+---------+ | ROWNUM() | PetId | PetName | +----------+-------+---------+ | 8 | 8 | Meow | | 7 | 7 | Bark | | 6 | 6 | Fluffy | | 5 | 5 | Tweet | | 4 | 4 | Wag | +----------+-------+---------+ 5 rows in set (0.000 sec)
कोष्ठक को छोड़ना
Oracle मोड में चलते समय, कोष्ठकों को छोड़ना संभव है। ऐसा करने से आप ROWNUM
. का अनुकरण कर सकते हैं Oracle में छद्म स्तंभ।
यहाँ Oracle मोड में स्विच करने का एक उदाहरण दिया गया है:
SET SQL_MODE='ORACLE';
अब हम ROWNUM
run चला सकते हैं कोष्ठक के बिना:
SELECT
ROWNUM,
PetId,
PetName
FROM Pets;
परिणाम:
+--------+-------+---------+ | ROWNUM | PetId | PetName | +--------+-------+---------+ | 1 | 1 | Fluffy | | 2 | 2 | Fetch | | 3 | 3 | Scratch | | 4 | 4 | Wag | | 5 | 5 | Tweet | | 6 | 6 | Fluffy | | 7 | 7 | Bark | | 8 | 8 | Meow | +--------+-------+---------+ 8 rows in set (0.029 sec)
ध्यान दें कि यह केवल Oracle मोड में उपलब्ध है। ROWNUM
. का उपयोग करना कोष्ठक के बिना Oracle मोड में नहीं होने पर त्रुटि होती है।
प्रदर्शित करने के लिए, आइए डिफ़ॉल्ट मोड पर स्विच करें:
SET SQL_MODE=DEFAULT;
अब क्वेरी को फिर से चलाएँ:
SELECT
ROWNUM,
PetId,
PetName
FROM Pets;
परिणाम:
ERROR 1054 (42S22): Unknown column 'ROWNUM' in 'field list'
अनुकूलन और अन्य कारकों के बारे में कुछ विचारों के लिए मारियाडीबी दस्तावेज देखें।