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

MySQL-এ টেবিলের অংশ থেকে MIN ও MAX মান বের করা (LIMIT সহ সাবকোয়ারি)

MySQL-এ পুরো টেবিল না করে শুধু প্রথম N সারি বা কোনো সাবসেট থেকে ন্যূনতম ও সর্বোচ্চ মান বের করতে সাবকোয়ারি সাথে LIMIT ব্যবহার করুন।

সিনট্যাক্স

SELECT MIN(col) AS min_val, MAX(col) AS max_val
FROM (SELECT col FROM table_name LIMIT n) AS subquery;

উদাহরণ

CREATE TABLE min_max_demo (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    value INT
);

INSERT INTO min_max_demo (value) VALUES (10), (100), (50), (40);

পুরো টেবিলের MIN/MAX

SELECT MIN(value) AS min_val, MAX(value) AS max_val FROM min_max_demo;
+--------+--------+
| min_val| max_val|
+--------+--------+
| 10     | 100    |
+--------+--------+

প্রথম ৩ সারির MIN/MAX (LIMIT 3)

SELECT MIN(value) AS min_val, MAX(value) AS max_val
FROM (SELECT value FROM min_max_demo LIMIT 3) AS subquery;

ফলাফল

+----------+-----------+
| min_val  | max_val   |
+----------+-----------+
| 10       | 100       |
+----------+-----------+

প্রথম ৩ সারি: 10, 100, 50 → Min=10, Max=100

অর্ডার দিয়ে LIMIT (স্পষ্টভাবে)

SELECT MIN(value) AS min_val, MAX(value) AS max_val
FROM (SELECT value FROM min_max_demo ORDER BY id LIMIT 3) AS subquery;

OFFSET সহ (পেজিনেশন-স্টাইল)

-- ৪র্থ থেকে ৬ষ্ঠ সারি (LIMIT 3 OFFSET 3)
SELECT MIN(value), MAX(value)
FROM (SELECT value FROM min_max_demo ORDER BY id LIMIT 3 OFFSET 3) AS subquery;

উন্নত: উইন্ডো ফাংশন (MySQL 8.0+)

SELECT 
    MIN(value) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_min,
    MAX(value) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_max
FROM min_max_demo;

দ্রষ্টব্য

  • LIMIT বিনা ORDER BY ব্যবহার করলে সারির ক্রম অনির্দিষ্ট (নন-ডিটারমিনিস্টিক)
  • সাবকোয়ারির এলিয়াস (এখানে AS subquery) বাধ্যতামূলক
  • বড় টেবিলে পারফরম্যান্সের জন্য ইনডেক্সড কলামে ORDER BY দিন
  1. MySQL-এ INSERT INTO ... SELECT ব্যবহার করে একটি টেবিলের সর্বোচ্চ ID অন্য টেবিলে ইনসার্ট করা

  2. MySQL-এ NOT EQUAL অপারেটর (<>) ব্যবহার করে নির্দিষ্ট ID বাদ দিয়ে সব রেকর্ড নির্বাচন করা

  3. MySQL-এ SELECT NULL WHERE FALSE ব্যবহার করে কোনো রো ও কলাম না দেখানো

  4. MySQL-এ GROUP BY + MAX() ব্যবহার করে প্রতিটি গ্রুপের সর্বোচ্চ মান বের করা