MySQL में, शर्त के साथ TRUNCATE करने का कोई तरीका नहीं है। आप WHERE क्लॉज के साथ TRUNCATE स्टेटमेंट का उपयोग नहीं कर सकते।
यदि आप शर्त चाहते हैं, तो DELETE कमांड का उपयोग करें:
DELETE FROM yourTableName WHERE yourCondition;
उपरोक्त सिंटैक्स ठीक है लेकिन यदि आप तेज समाधान चाहते हैं, तो DELETE की तुलना में TRUNCATE अच्छा नहीं है। TRUNCATE का फायदा यह है कि यह लॉग में नहीं लिखता।
आइए एक टेबल बनाते हैं। टेबल बनाने का क्वेरी:
mysql> CREATE TABLE DeleteDemo (
-> Id INT,
-> Name VARCHAR(100)
-> ); Query OK, 0 rows affected (1.22 sec)
INSERT कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:
mysql> INSERT INTO DeleteDemo VALUES(101,'Carol'); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DeleteDemo VALUES(102,'Sam'); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DeleteDemo VALUES(103,'Bob'); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DeleteDemo VALUES(104,'Mike'); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO DeleteDemo VALUES(105,'John'); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO DeleteDemo VALUES(106,'Maria'); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO DeleteDemo VALUES(107,'Johnson'); Query OK, 1 row affected (0.17 sec)
आइए अब SELECT कमांड का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> SELECT * FROM DeleteDemo;
आउटपुट
+------+---------+ | Id | Name | +------+---------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | | 105 | John | | 106 | Maria | | 107 | Johnson | +------+---------+ 7 rows in set (0.00 sec)
अब आप DELETE कमांड का उपयोग कर सकते हैं लेकिन यह WHERE क्लॉज के साथ TRUNCATE नहीं करेगा। WHERE क्लॉज का उपयोग करके टेबल से रिकॉर्ड हटाने का क्वेरी:
mysql> DELETE FROM DeleteDemo WHERE Id > 104; Query OK, 3 rows affected (0.13 sec)
आइए एक बार फिर SELECT कमांड का उपयोग करके टेबल डेटा चेक करें:
mysql> SELECT * FROM DeleteDemo;
आउटपुट
+------+-------+ | Id | Name | +------+-------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | +------+-------+ 4 rows in set (0.00 sec)
उपरोक्त नमूना आउटपुट देखें, 104 से अधिक सभी रिकॉर्ड टेबल से हटा दिए गए हैं।