เลือกบันทึกล่าสุดตามวันที่ใน SQL

Leuxk Banthuk Lasud Tam Wan Thi Ni Sql



เมื่อทำงานในฐานข้อมูล SQL คุณอาจพบอินสแตนซ์ที่คุณต้องการดึงข้อมูลบันทึกล่าสุดจากตารางที่ระบุตามวันที่ ซึ่งอาจใช้สำหรับการแบ่งหน้า การจัดการสินค้าคงคลัง การตรวจสอบ ฯลฯ

ในคู่มือนี้ เราจะแนะนำวิธีการและเทคนิคต่างๆ ที่เราสามารถใช้เพื่อเลือกเรกคอร์ดล่าสุดจากตารางตามวันที่

ข้อมูลตัวอย่าง

เพื่อวัตถุประสงค์ในการสาธิต เราใช้ฐานข้อมูลตัวอย่าง 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 ซึ่งจะเลือกบันทึกการเช่าล่าสุดได้อย่างมีประสิทธิภาพ

บทสรุป

ในโพสต์นี้ เราได้สำรวจวิธีการและเทคนิคต่างๆ ที่เราสามารถใช้เพื่อดึงข้อมูลบันทึกล่าสุดตามวันที่