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দিন