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

क्या MySQL में एक ही क्वेरी के साथ बूलियन फ़ील्ड को उलटने का कोई तरीका है?

<घंटा/>

हां, आप बूलियन फ़ील्ड को उलटने के लिए MySQL से if() फ़ंक्शन का उपयोग कर सकते हैं। वाक्य रचना इस प्रकार है -

UPDATE yourTableName SET yourBooleanColumnName = IF(yourBooleanColumnName,0,1);

उपरोक्त वाक्य रचना को समझने के लिए, आइए एक तालिका बनाते हैं। तालिका बनाने की क्वेरी इस प्रकार है -

mysql> create table ReverseBooleanField
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> isValid BOOLEAN
   -> ,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.56 sec)

अब आप इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डाल सकते हैं। क्वेरी इस प्रकार है -

mysql> insert into ReverseBooleanField(isValid) values(true);
Query OK, 1 row affected (0.18 sec)

mysql> insert into ReverseBooleanField(isValid) values(false);
Query OK, 1 row affected (0.14 sec)

mysql> insert into ReverseBooleanField(isValid) values(true);
Query OK, 1 row affected (0.29 sec)

mysql> insert into ReverseBooleanField(isValid) values(true);
Query OK, 1 row affected (0.09 sec)

mysql> insert into ReverseBooleanField(isValid) values(false);
Query OK, 1 row affected (0.14 sec)

चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें। क्वेरी इस प्रकार है -

mysql> select *from ReverseBooleanField;

निम्न आउटपुट है -

+----+---------+
| Id | isValid |
+----+---------+
|  1 |       1 |
|  2 |       0 |
|  3 |       1 |
|  4 |       1 |
|  5 |       0 |
+----+---------+
5 rows in set (0.00 sec)

MySQL आंतरिक रूप से BOOLEAN को TINYINT(1) में परिवर्तित करता है जो 1 के रूप में सत्य और 0 के रूप में गलत देता है।

अब, बूलियन फ़ील्ड को एक ही क्वेरी में उलट दें -

mysql> update ReverseBooleanField set isValid = if(isValid,0,1);
Query OK, 5 rows affected (0.21 sec)
Rows matched − 5 Changed − 5 Warnings − 0

जांचें कि बूलियन फ़ील्ड उलट है या नहीं, चयन कथन का उपयोग नहीं कर रहा है। क्वेरी इस प्रकार है -

mysql> select *from ReverseBooleanField;

निम्न आउटपुट है -

+----+---------+
| Id | isValid |
+----+---------+
| 1  |       0 |
| 2  |       1 |
| 3  |       0 | 
| 4  |       0 |
| 5  |       1 |
+----+---------+
5 rows in set (0.00 sec)

  1. MySQL क्वेरी NULL के स्थान पर केवल एक फ़ील्ड को अपडेट करने के लिए

    इसके लिए आप COALESCE() का इस्तेमाल कर सकते हैं। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1805 (Name1 varchar(20), Name2 varchar(20));क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1805 मानों में डालें (NULL, माइक); क्वेरी ठीक है,

  1. एकल MySQL क्वेरी के साथ दो कॉलम अपडेट करें

    इसके लिए आपको केवल एक बार SET कमांड का इस्तेमाल करना होगा। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1909 (Id int NOT NULL, FirstName varchar(20), LastName varchar(20));क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1909 मानों में

  1. एक ही क्वेरी में IN () के साथ MySQL तालिका से रिकॉर्ड हटाएं

    आइए एक टेबल बनाएं - टेबल बनाएं DemoTable1922 (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20));क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1922(StudentName) मानों (माइक) में डालें; क्वेरी ठीक है, 1 पंक्त