ในคู่มือนี้ เราจะแนะนำวิธีการและเทคนิคต่างๆ ที่เราสามารถใช้เพื่อเลือกเรกคอร์ดล่าสุดจากตารางตามวันที่
ข้อมูลตัวอย่าง
เพื่อวัตถุประสงค์ในการสาธิต เราใช้ฐานข้อมูลตัวอย่าง Sakila ที่พร้อมใช้งานสำหรับเวอร์ชัน MySQL และ PostgreSQL
คุณสามารถดาวน์โหลดและนำเข้าฐานข้อมูลตัวอย่างบนเซิร์ฟเวอร์ของคุณได้ คุณยังสามารถใช้ชุดข้อมูลอื่นได้ตามความเหมาะสม
ตัวอย่างที่ 1: เรียงตาม
วิธีการพื้นฐานและง่ายที่สุดที่เราสามารถใช้เพื่อดึงข้อมูลบันทึกล่าสุดตามวันที่คือการใช้คำสั่งย่อย SQL ORDER BY
เราสามารถเรียงลำดับเรกคอร์ดจากมากไปน้อยตามค่าวันที่ จากนั้นจำกัดผลลัพธ์ให้เหลือเพียงแถวเดียว
ยกตัวอย่างตารางเช่าจากฐานข้อมูลตัวอย่าง Sakila ประกอบด้วยคอลัมน์ “rent_date” ซึ่งระบุวันที่เช่าภาพยนตร์
เราสามารถใช้สิ่งนี้เพื่อสาธิตวิธีใช้คำสั่งย่อย ORDER BY เพื่อดึงข้อมูลบันทึกล่าสุดจากตาราง
เลือก *
จากการเช่า
คำสั่ง ตามวันที่เช่า DESC
จำกัด 1 -
ในกรณีนี้ เราใช้คำสั่งย่อย ORDER BY และส่งผ่าน 'rent_date' เป็นคอลัมน์เป้าหมาย นอกจากนี้เรายังตรวจสอบให้แน่ใจว่าได้แจ้งฐานข้อมูลเพื่อเรียงลำดับบันทึกจากมากไปน้อย
สุดท้ายนี้ เรายังจำกัดจำนวนเรกคอร์ดเอาต์พุตที่ควรส่งคืนแถวล่าสุดจากตาราง
ตัวอย่างที่ 2: การใช้ฟังก์ชัน Max()
คุณรู้ไหมว่าเราสามารถใช้ฟังก์ชัน max() กับค่าวันที่ได้ ใช่ เราสามารถใช้แบบสอบถามย่อย SQL แบบธรรมดาและฟังก์ชัน max() กับค่าวันที่เพื่อดึงข้อมูลบันทึกล่าสุดจากตารางที่กำหนด
ลองพิจารณาตัวอย่างต่อไปนี้:
เลือก *จากการเช่า
WHERE rent_date = (เลือกสูงสุด (rent_date) จากการเช่า);
การใช้แบบสอบถามย่อยค้นหาวันที่เช่าสูงสุดจากตาราง ในแบบสอบถามหลัก เราควรดึงข้อมูลบันทึกที่มี 'rent_date' เท่ากับวันที่สูงสุด
ตัวอย่างที่ 3: ฟังก์ชั่นหน้าต่าง
สำหรับฐานข้อมูลที่รองรับฟังก์ชัน window เราสามารถใช้ฟังก์ชัน subquery และ row_number() เพื่อดึงข้อมูลบันทึกล่าสุดจากตารางได้ดังนี้:
เลือก *จาก (
เลือก *,
ROW_NUMBER() เกิน ( คำสั่ง BY rent_date DESC) AS rn
จากการเช่า
) AS แบบสอบถามย่อย
ที่ไหน = 1 -
ในตัวอย่างที่กำหนด แบบสอบถามย่อยจะกำหนดหมายเลขแถวให้กับแต่ละแถวตามคอลัมน์ 'rental_date' ตามลำดับจากมากไปน้อยโดยใช้ฟังก์ชันหน้าต่าง ROW_NUMBER()
จากนั้นแบบสอบถามภายนอกจะเลือกคอลัมน์ทั้งหมดจากแบบสอบถามย่อยที่มีหมายเลขแถวเป็น 1 ซึ่งจะเลือกบันทึกการเช่าล่าสุดได้อย่างมีประสิทธิภาพ
บทสรุป
ในโพสต์นี้ เราได้สำรวจวิธีการและเทคนิคต่างๆ ที่เราสามารถใช้เพื่อดึงข้อมูลบันทึกล่าสุดตามวันที่