การ Query ข้อมูลลำดับก่อนหน้าและลำดับถัดไป
การ Query ข้อมูลลำดับก่อนหน้าและลำดับถัดไป โดยทั่วไปจะใช้ในการ Query ข้อมูลรายการที่ผ่านมา (คล้ายๆปุ่ม Back) และ รายการต่อจากรายการที่กำลังดูอยู่ (ปุ่ม Next) สมมุติว่าเรากำลังเปิดดูรายการที่ 20 อยู่นะครับ
คำสั่งแรกจะเป็นการ Query ข้อมูลรายการที่ถัดจากรายการที่เลือก (มากกว่า 20) ซึ่งจะได้ผลลัพท์เป็น 21,22,23...... และเลือกมาเพียงรายการเดียวซึ่งก็คือ รายการที่ 21
อีกคำสั่ง เราจะ Query รายก่อนหน้ารายการที่เลือก (น้อยกว่า 20) ซึ่งจะได้ผลลัพท์เป็น 19,18,17.... สังเกตุนะครับว่า การเลือกรายการก่อนหน้า เราจะใช้การเรียงลำดับเป็น DESC ซึ่งจะแตกต่างจากการเลือกรายการถัดไป และทำการเลือกผลลัพท์มาเพียง 1 รายการคือ รายการที่ 19
และเพื่อให้สามารถ QUERY เพียงครั้งเดียวเท่านั้นเราก็เลยนำทั้งสอง QUERY มารวมกันด้วยคำสั่ง UNION ซึ่งจะได้ผลลัพท์ตามด้านล่าง
ผลการ 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 ใช้ตกแต่งเวบของเราดีกว่า |