MySQL-এ DELETE স্টেটমেন্টে WHERE ক্লজ ব্যবহার করে শর্তের ভিত্তিতে নির্দিষ্ট রো ডিলিট করা যায়। LIMIT দিয়ে ডিলিটের সংখ্যা সীমাবদ্ধ করা যায়।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
Id INT,
Name VARCHAR(20)
);
INSERT INTO DemoTable VALUES(100,'Bob');
INSERT INTO DemoTable VALUES(101,'Chris');
INSERT INTO DemoTable VALUES(102,'David');
INSERT INTO DemoTable VALUES(103,'Sam');
INSERT INTO DemoTable VALUES(104,'Carol');
কুয়েরি: Id > 102 হয়ে যাওয়া রো ডিলিট
DELETE FROM DemoTable
WHERE Id > 102;
ফলাফল (Id 103, 104 ডিলিট)
+------+-------+
| Id | Name |
+------+-------+
| 100 | Bob |
| 101 | Chris |
| 102 | David |
+------+-------+
LIMIT ব্যবহার (সুরক্ষা)
DELETE FROM DemoTable
WHERE Id > 100
LIMIT 2;
সর্বোচ্চ ২টি রো ডিলিট হবে (১০১, ১০২)। বাল্ক ডিলিটে লক কম করতে LIMIT ব্যবহার করা ভালো প্র্যাকটিস।
ORDER BY সাথে LIMIT (MySQL এক্সটেনশন)
DELETE FROM DemoTable
WHERE Id > 100
ORDER BY Id ASC
LIMIT 2;
নিশ্চিত করে সবচেয়ে ছোট Id-গুলো ডিলিট হবে।
সাবধানতা
WHEREছাড়াDELETE→ সকল রো ডিলিট (TRUNCATE দ্রুত)- ফরেন কী থাকলে
ON DELETE CASCADE/RESTRICTচেক করুন - বড় টেবিলে চাঙ্কে ডিলিট করুন (১০০০-৫০০০ রো প্রতি ব্যাচ)
বাল্ক ডিলিট প্যাটার্ন
DELETE FROM big_table
WHERE created_at < '2020-01-01'
LIMIT 10000;
লুপ চালিয়ে ROW_COUNT() = 0 হলে বন্ধ করুন।