การ Query ข้อมูลลำดับก่อนหน้าและลำดับถัดไป
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 ใช้ตกแต่งเวบของเราดีกว่า |