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

MySQL में न्यूमेरिक यूज़र-डिफ़ाइंड वेरिएबल के साथ ORDER BY कैसे करें?

MySQL में डायनामिक कॉलम नाम के साथ ORDER BY करने के लिए, यूज़र-डिफ़ाइंड वेरिएबल और PREPARED STATEMENT का उपयोग करें। यह तब उपयोगी होता है जब कॉलम का नाम रनटाइम पर तय होता है।

उदाहरण: वेरिएबल के साथ डायनामिक ORDER BY

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1898 (Number INT);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1898 VALUES (10), (70), (30), (50), (40);

डायनामिक ORDER BY के लिए स्टेप्स:

-- 1. वेरिएबल सेट करें (कॉलम पोजीशन: 1 = पहला कॉलम)
mysql> SET @limitValue := 1;

-- 2. डायनामिक क्वेरी बनाएं
mysql> SET @query := CONCAT('SELECT * FROM DemoTable1898 ORDER BY ', @limitValue);

-- 3. प्रिपेयर करें
mysql> PREPARE stmt FROM @query;

-- 4. एक्ज़ीक्यूट करें
mysql> EXECUTE stmt;

-- 5. डीअलोकेट करें
mysql> DEALLOCATE PREPARE stmt;

आउटपुट (पहले कॉलम द्वारा सॉर्टेड):

+--------+
| Number |
+--------+
| 10     |
| 30     |
| 40     |
| 50     |
| 70     |
+--------+

महत्वपूर्ण नोट्स

  • कॉलम पोजीशन: MySQL ORDER BY 1, ORDER BY 2 आदि को कॉलम पोजीशन के रूप में सपोर्ट करता है।
  • SQL इंजेक्शन जोखिम: वेरिएबल मान को वैलिडेट/सैनिटाइज़ करें यदि यह यूज़र इनपुट से आता है।
  • स्कोप: यूज़र वेरिएबल (@var) सेशन-स्कोप्ड होते हैं।
  • प्रिपेयर्ड स्टेटमेंट: डायनामिक SQL के लिए आवश्यक है।

बेहतर विकल्प: एप्लिकेशन लेयर पर डायनामिक SQL

आधुनिक एप्लिकेशन में, डायनामिक सॉर्टिंग एप्लिकेशन कोड (Java, Python, PHP, आदि) में बनाना अधिक सुरक्षित और रखरखाव योग्य है:

// पसेडोकोड
String column = validateColumn(userInput); // व्हाइटलिस्ट वैलिडेशन
String sql = "SELECT * FROM table ORDER BY " + column;

डेटाबेस लेयर पर डायनामिक SQL का उपयोग सीमित मामलों (स्टोर्ड प्रोसीजर, एडमिन स्क्रिप्ट) के लिए ही करें।

  1. - MySQL में उपयोगकर्ता-परिभाषित वेरिएबल में SELECT INTO करें

    SELECT ... INTO @variable से क्वेरी परिणाम को वेरिएबल में संग्रहीत करना MySQL में एक क्वेरी के परिणाम (एकल मान) को उपयोगकर्ता-परिभाषित वेरिएबल (@var_name) में संग्रहीत करने के लिए SELECT column INTO @variable FROM table WHERE condition सिंटैक्स का उपयोग करें। सिंटैक्स SELECT yourColumnName INTO @an

  1. - MySQL में शर्त के साथ ORDER BY और SELECT कैसे करें?

    कंडीशनल ORDER BY: जीरो वैल्यू अंत में किसी कॉलम को सॉर्ट करते समय खास मान (जैसे 0) को अंत में रखने और बाकी को नॉर्मल ऑर्डर में रखने के लिए बूलियन एक्सप्रेशन का उपयोग करें। सिंटैक्स SELECT * FROM yourTableName ORDER BY yourColumnName = 0, yourColumnName; टेबल बनाना और डेटा इन्सर्ट करना CREATE TABL

  1. - MySQL में आरक्षित शब्द 'order' को टेबल नाम के रूप में उपयोग करने के लिए बैकटिक्स

    MySQL में ORDER एक आरक्षित शब्द (reserved word) है। इसे टेबल या कॉलम नाम के रूप में उपयोग करने के लिए बैकटिक्स (`) से घेरना आवश्यक है। समस्या CREATE TABLE order (StudentId INT); ERROR 1064: You have an error in your SQL syntax near order समाधान: बैकटिक्स का उपयोग CREATE TABLE `order` (StudentId