ড্যানের মতো আমারও একই সমস্যা ছিল, তাই আমি তার উত্তরটি ব্যবহার করেছি এবং এটি উন্নত করেছি।
প্রথমে সারি সূচক নির্বাচন করুন, এখানে আলাদা কিছু নয়।
SELECT row
FROM
(SELECT @rownum:=@rownum+1 row, a.*
FROM articles a, (SELECT @rownum:=0) r
ORDER BY date, id) as article_with_rows
WHERE id = 50;
এখন দুটি পৃথক প্রশ্ন ব্যবহার করুন। উদাহরণস্বরূপ, যদি সারি সূচক 21 হয়, পরবর্তী রেকর্ডটি নির্বাচন করার ক্যোয়ারীটি হ'ল:
SELECT *
FROM articles
ORDER BY date, id
LIMIT 21, 1
পূর্ববর্তী রেকর্ডটি নির্বাচন করতে এই ক্যোয়ারীটি ব্যবহার করুন:
SELECT *
FROM articles
ORDER BY date, id
LIMIT 19, 1
মনে রাখবেন যে প্রথম সারির জন্য (সারি সূচক 1), সীমাটি -1 এ চলে যাবে এবং আপনি একটি মাইএসকিউএল ত্রুটি পাবেন। এটি প্রতিরোধ করতে আপনি যদি একটি বিবৃতি ব্যবহার করতে পারেন। আগের কোনও রেকর্ড নেই বলে কেবল কিছু নির্বাচন করবেন না। শেষ রেকর্ডের ক্ষেত্রে, পরবর্তী সারিতে থাকবে এবং এর ফলে কোনও ফল হবে না।
এও মনে রাখবেন যে আপনি যদি ডিএসইসি অর্ডার করার জন্য ব্যবহার করেন তবে এএসসির পরিবর্তে, আপনি পরবর্তী এবং পূর্ববর্তী সারিগুলি নির্বাচন করার প্রশ্নগুলি এখনও একই, তবে স্যুইচ করেছেন।