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

MySQL-এ একক কোয়েরিতে প্রিভিয়াস এবং নেক্সট রেকর্ড পাওয়া (UNION)

MySQL-এ কোনো নির্দিষ্ট ID-এর আগের (previous) এবং পরের (next) রেকর্ড একসাথে পাওয়ার জন্য UNION ব্যবহার করা হয়।

সিনট্যাক্স

(SELECT * FROM yourTableName WHERE yourIdColumnName > yourValue ORDER BY yourIdColumnName ASC LIMIT 1)
UNION
(SELECT * FROM yourTableName WHERE yourIdColumnName < yourValue ORDER BY yourIdColumnName DESC LIMIT 1);

উদাহরণ

টেবিল তৈরি:

mysql> CREATE TABLE previousAndNextRecordDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(30)
    -> );

১৩টি রেকর্ড ইনসার্ট (ID ১ থেকে ১৩):

mysql> SELECT * FROM previousAndNextRecordDemo;
+----+---------+
| Id | Name    |
+----+---------+
| 1  | John    |
| 2  | Sam     |
| 3  | Carol   |
| 4  | Bob     |
| 5  | Larry   |
| 6  | David   |
| 7  | Ramit   |
| 8  | Maxwell |
| 9  | Mike    |
| 10 | Robert  |
| 11 | Chris   |
| 12 | James   |
| 13 | Jace    |
+----+---------+

ID ৮ (Maxwell)-এর প্রিভিয়াস ও নেক্সট:

mysql> (SELECT * FROM previousAndNextRecordDemo WHERE Id > 8 ORDER BY Id ASC LIMIT 1)
    -> UNION
    -> (SELECT * FROM previousAndNextRecordDemo WHERE Id < 8 ORDER BY Id DESC LIMIT 1);
+----+-------+
| Id | Name  |
+----+-------+
| 9  | Mike  |
| 7  | Ramit |
+----+-------+

ব্যাখ্যা: প্রথম কোয়েরি ID ৮-এর বড় মানের ছোটোটি (৯), দ্বিতীয় কোয়েরি ID ৮-এর ছোট মানের বড়টি (৭)। UNION দিয়ে একসাথে দেখানো হয়েছে। এজ কেস: প্রথম রোয়ের জন্য প্রিভিয়াস নেই, শেষ রোয়ের জন্য নেক্সট নেই - তবে কোয়েরি এরর দিবে না, শুধু সেই অংশ খালি রিটার্ন করবে। MySQL 8.0+ এ LAG() এবং LEAD() উইন্ডো ফাংশন ব্যবহার করা আরও দক্ষ।

  1. MySQL কোয়ারি দিয়ে চতুর্থ সর্বোচ্চ মান বের করার পদ্ধতি

  2. MySQL-এ UNION এবং MAX()/MIN() ব্যবহার করে দুটি টেবিল থেকে সর্বোচ্চ ও ন্যূনতম মান বের করা

  3. MySQL에서 중복 튜플 찾기와 개수 세기 (GROUP BY HAVING)

  4. MySQL-এ AND ও OR অপারেটর ব্যবহার করে নির্দিষ্ট রেকর্ড বের করা