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

MySQL SELECT स्टेटमेंट से मान को वेरिएबल में कैसे स्टोर करें?

MySQL में उपयोगकर्ता-परिभाषित वेरिएबल (@) में SELECT परिणाम स्टोर करना

MySQL में SET @variable = (SELECT ...) या SELECT @variable := ... का उपयोग करके क्वेरी परिणाम को सत्र वेरिएबल में स्टोर कर सकते हैं।

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना

mysql> CREATE TABLE DemoTable631 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100)
);

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable631(StudentName) VALUES('John Smith'), ('Adam Smith'), ('David Miller');

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable631;

आउटपुट:

+-----------+--------------+
| StudentId | StudentName  |
+-----------+--------------+
| 1         | John Smith   |
| 2         | Adam Smith   |
| 3         | David Miller |
+-----------+--------------+
3 rows in set (0.00 sec)

विधि 1: SET के साथ (स्केलर उपक्वेरी)

mysql> SET @fullName = (SELECT StudentName FROM DemoTable631 WHERE StudentId = 2);

परिणाम: Query OK, 0 rows affected (0.00 sec)

विधि 2: SELECT := के साथ

mysql> SELECT @fullName := StudentName FROM DemoTable631 WHERE StudentId = 2;

यह परिणाम सेट भी लौटाता है।

वेरिएबल मान देखना

mysql> SELECT @fullName;

आउटपुट:

+------------+
| @fullName  |
+------------+
| Adam Smith |
+------------+
1 row in set (0.00 sec)

मुख्य बिंदु:

  • @variable सत्र-विशिष्ट उपयोगकर्ता वेरिएबल है (कनेक्शन बंद होने तक जीवित)
  • उपक्वेरी एकल मान लौटानी चाहिए (एक पंक्ति, एक कॉलम)
  • एकाधिक पंक्तियाँ लौटाने पर त्रुटि: Subquery returns more than 1 row
  • कोई पंक्ति न मिलने पर वेरिएबल NULL हो जाता है

एकाधिक मान स्टोर करना (JSON के साथ MySQL 5.7+)

SELECT @names := JSON_ARRAYAGG(StudentName) FROM DemoTable631;
SELECT @names; -- ["John Smith", "Adam Smith", "David Miller"]
SELECT JSON_EXTRACT(@names, '$[1]'); -- "Adam Smith"

स्टोर्ड प्रोसीजर में OUT पैरामीटर (बेहतर अभ्यास)

CREATE PROCEDURE GetStudentName(IN id INT, OUT name VARCHAR(100))
BEGIN
    SELECT StudentName INTO name FROM DemoTable631 WHERE StudentId = id;
END;

CALL GetStudentName(2, @name);
SELECT @name;

तैयार स्टेटमेंट में उपयोग

SET @id = 2;
PREPARE stmt FROM 'SELECT StudentName FROM DemoTable631 WHERE StudentId = ?';
EXECUTE stmt USING @id;
DEALLOCATE PREPARE stmt;

सत्र वेरिएबल vs स्थानीय वेरिएबल

प्रकारवाक्यविन्यासस्कोपघोषणा
उपयोगकर्ता वेरिएबल@nameसत्रआवश्यक नहीं
स्थानीय वेरिएबलDECLARE nameBEGIN...END ब्लॉकआवश्यक (DECLARE में)
सिस्टम वेरिएबल@@nameग्लोबल/सत्रसर्वर कॉन्फ़िगरेशन
  1. - MySQL SELECT स्टेटमेंट में NULL का उपयोग कैसे करें?

    MySQL में NULL की लंबाई 0 होती है। IS NULL से NULL चेक करें, = NULL काम नहीं करता। उदाहरण CREATE TABLE NullWIthSelect (Name VARCHAR(100)); INSERT INTO NullWIthSelect VALUES (John), (Bob), (), (Carol), (), (David), (); SELECT * FROM NullWIthSelect; +-------+ | Name | +-------+ | John | | Bob |

  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) टेबल में रिकॉर

  1. - MySQL में मान 0 होने पर दूसरे कॉलम का मान कैसे चुनें?

    IF() फ़ंक्शन का उपयोग यदि किसी कॉलम का मान 0 है तो दूसरे कॉलम का मान लेने के लिए IF() फ़ंक्शन प्रयोग करें: select IF(yourColumnName1=0, yourColumnName2, yourColumnName1) as anyAliasName from yourTableName; टेबल बनाना और डेटा डालना insert into demo30(value,original_value) values(30,0); डेटा देखना