কম্পিউটার টিউটোরিয়াল

MySQL-এ শর্তের ভিত্তিতে নির্দিষ্ট রো ডিলিট করা (WHERE + LIMIT)

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 হলে বন্ধ করুন।

  1. MySQL-এ IF() ফাংশন দিয়ে শর্তসাপেক্ষ আপডেট (দুটি মান ইন্টারচেঞ্জ)

  2. MySQL টেবিল থেকে শুধু ৩টি অর্ডার করা সারি কীভাবে বের করবেন?

  3. MySQL-এ মাস অনুযায়ী টোটাল বের করা (GROUP BY MONTH)

  4. MySQL-এ নির্দিষ্ট সারি মাত্র ডিলিট করার পদ্ধতি (NOT IN ব্যবহার)