การ Query ข้อมูลลำดับก่อนหน้าและลำดับถัดไป

การ Query ข้อมูลลำดับก่อนหน้าและลำดับถัดไป โดยทั่วไปจะใช้ในการ Query ข้อมูลรายการที่ผ่านมา (คล้ายๆปุ่ม Back) และ รายการต่อจากรายการที่กำลังดูอยู่ (ปุ่ม Next) สมมุติว่าเรากำลังเปิดดูรายการที่ 20 อยู่นะครับ
SELECT ... FROM ... WHERE `id`>20 ORDER BY `id` ASC LIMIT 1

คำสั่งแรกจะเป็นการ Query ข้อมูลรายการที่ถัดจากรายการที่เลือก (มากกว่า 20) ซึ่งจะได้ผลลัพท์เป็น 21,22,23...... และเลือกมาเพียงรายการเดียวซึ่งก็คือ รายการที่ 21
SELECT ... FROM ... WHERE id<20 ORDER BY `id` DESC LIMIT 1

อีกคำสั่ง เราจะ Query รายก่อนหน้ารายการที่เลือก (น้อยกว่า 20) ซึ่งจะได้ผลลัพท์เป็น 19,18,17.... สังเกตุนะครับว่า การเลือกรายการก่อนหน้า เราจะใช้การเรียงลำดับเป็น DESC ซึ่งจะแตกต่างจากการเลือกรายการถัดไป และทำการเลือกผลลัพท์มาเพียง 1 รายการคือ รายการที่ 19

และเพื่อให้สามารถ QUERY เพียงครั้งเดียวเท่านั้นเราก็เลยนำทั้งสอง QUERY มารวมกันด้วยคำสั่ง UNION ซึ่งจะได้ผลลัพท์ตามด้านล่าง
(SELECT `id`,`alias` FROM `table_name` WHERE `id`>20 ORDER BY `id` LIMIT 1)
UNION
(SELECT `id`,`alias` FROM `table_name` WHERE id<20 ORDER BY `id` DESC LIMIT 1)

ผลการ Query จะเป็นตามตาราง
id alias
21 Ext JS tutorial (ภาษาไทย)
19 มาทำ Tag Cloud ใช้ตกแต่งเวบของเราดีกว่า
ผู้เขียน goragod โพสต์เมื่อ 13 พ.ค. 2558 เปิดดู 8,308 ป้ายกำกับ SQL
^