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

MySQL-এ nth রো ডিলিট করা (সাবকোয়ারি দিয়ে)


MySQL-এ LIMIT/OFFSET দিয়ে nth রো ডিলিট

MySQL-এ সরাসরি DELETE ... LIMIT 1 OFFSET n সাপোর্ট করে না। nth রো ডিলিট করতে সাবকোয়ারি ব্যবহার করে ঐ রোয়ার প্রাইমারি কি বের করে ডিলিট করা হয়।

সিনট্যাক্স

DELETE FROM yourTableName 
WHERE primaryKey = (
    SELECT primaryKey FROM (
        SELECT primaryKey FROM yourTableName ORDER BY primaryKey LIMIT 1 OFFSET n-1
    ) AS tbl
);

উদাহরণ সহ ব্যাখ্যা

টেবিল তৈরি ও ডেটা:

mysql> CREATE TABLE DemoTable1 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(100)
    -> );
mysql> INSERT INTO DemoTable1(StudentName) VALUES
    -> ('Larry'),('Sam'),('Mike'),('Carol'),('David'),('Bob');

বর্তমান ডেটা:

mysql> SELECT * FROM DemoTable1;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| 2         | Sam         |
| 3         | Mike        |
| 4         | Carol       |
| 5         | David       |
| 6         | Bob         |
+-----------+-------------+

২য় রো (n=2, OFFSET 1) ডিলিট:

mysql> DELETE FROM DemoTable1 
    -> WHERE StudentId = (
    ->     SELECT StudentId FROM (
    ->         SELECT StudentId FROM DemoTable1 ORDER BY StudentId LIMIT 1, 1
    ->     ) AS tbl
    -> );

ফলাফল (Sam মুছে গেল):

mysql> SELECT * FROM DemoTable1;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| 3         | Mike        |
| 4         | Carol       |
| 5         | David       |
| 6         | Bob         |
+-----------+-------------+

নোট: MySQL 8.0+ এ LIMIT 1 OFFSET 1 সিনট্যাক্সও কাজ করে। ডেরাইভড টেবিল (AS tbl) MySQL-এ বাধ্যতামূলক।

  1. MySQL-এ ZEROFILL (ZF) ব্যবহার করে সংখ্যা বাম পাশে শূন্য প্যাডিং

  2. MySQL에서 컬럼 값별 행 개수 세기 (GROUP BY + COUNT)

  3. MySQL-এ নির্দিষ্ট কলামের সর্বোচ্চ মান ধারণকারী সারি খুঁজে বের করা

  4. mysqld - MySQL সার্ভার