คำสั่ง SQL เลือกข้อมูลรายการที่ 2
เรื่องของเรื่องคือ ผมต้องการข้อมูลการเข้าระบบครั้งก่อนหน้าของตัวเองมาแสดง สิ่งที่คิดได้ก็คือ ทำการเรียงลำดับจากวันที่ปัจจุบันไปหาวันที่ก่อน แล้วเลือกเอารายการที่สองมาเพียงรายการเดียว
จากแนวคิดที่ตั้งใจไว้เปลี่ยนเป็นคำสั่ง SQL ได้ประมาณนี้
SELECT * FROM (
SELECT * FROM login_log ORDER BY create_date DESC LIMIT 2
) AS Q ORDER BY create_date LIMIT 1
Query ชั้นใน เลือกรายการมาเพียงสองรายการก่อน โดยเรียงลำดับตามวันที่มากสุดขึ้นก่อน ซึ่งก็จะได้ข้อมูลมาสองรายการ เสร็จแล้วนำผลลัพท์ที่ได้เรียงลำดับอีกครั้ง (นอกวงเล็บ) โดยเรียงเอาวันที่น้อยมาก่อน แล้วตัดออกเหลือเพียงหนึ่งรายการ ก็จะได้รายการที่ต้องการ
แต่หลังจากตีลังกามองไปมองมา ก็แวบขึ้นได้ว่า มันมีวิธีที่ง่ายกว่านี้ (ที่มองหาวิธีที่ง่ายกว่าเพราะโค้ดจริงๆมันยาวกว่านี้ เลยทำให้ต้องมานั่งทบทวน Query ใหม่) โดยการใช้คำสั่งพื้นฐานสุดๆ
SELECT * FROM login_log ORDER BY create_date DESC LIMIT 1, 1
พระเอกคือ LIMIT ซึ่งพารามิเตอร์ตัวแรกคือรายการแรกที่ต้องการ ซึ่งรายการแรกของ MySQL คือ 0 (หรือระบุแค่ตัวที่สองอย่างเดียวหมายถึงเริ่มตั้งแต่รายการแรก) และพารามิเตอร์ตัวที่สองคือ จำนวนที่ต้องการ ดังนั้น "รายการที่สองรายการเดียว" จึงเขียนได้เป็น LIMIT 1, 1