โชคดีที่ใน SQL เราสามารถเข้าถึงส่วนคำสั่ง LIMIT ซึ่งช่วยให้เราสามารถควบคุมจำนวนแถวที่ส่งคืนภายในชุดผลลัพธ์ที่กำหนด คุณลักษณะนี้มีประโยชน์มากเมื่อเราจัดการกับชุดข้อมูลขนาดใหญ่และจริงๆ แล้วไม่ต้องการทั้งแถว แต่ต้องใช้ชุดย่อยแทน นี่อาจเป็นได้ทั้งเพื่อให้ได้เค้าโครงของข้อมูลหรือการนำเสนอ
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้และทำงานกับส่วนคำสั่ง LIMIT ในฐานข้อมูล SQL เพื่อระบุจำนวนแถวที่เราต้องการดึงจากฐานข้อมูล
ความต้องการ:
ก่อนที่เราจะเจาะลึกการทำงานและการใช้งานคำสั่งย่อย LIMIT ใน SQL ให้เราหารือเกี่ยวกับข้อกำหนดพื้นฐานบางประการสำหรับบทช่วยสอนนี้
หากต้องการติดตามโพสต์นี้ คุณจะต้องมีสิ่งต่อไปนี้:
- MySQL 8.0 ขึ้นไปใช้งานได้กับ MySQL 5
- เข้าถึงฐานข้อมูลตัวอย่าง Sakila
- สิทธิ์ในการสืบค้นแถวจากฐานข้อมูลเป้าหมาย (การเข้าถึงแบบอ่าน)
เมื่อมีคุณสมบัติตรงตามข้อกำหนดแล้ว เราก็สามารถดำเนินการตามบทแนะนำนี้ได้
ขีดจำกัด SQL
ใน SQL ส่วนคำสั่ง LIMIT อนุญาตให้เราจำกัดจำนวนแถวที่ส่งคืนจากการสืบค้น SQL ที่กำหนด ตัวอย่างเช่น ในคำสั่ง select แทนที่จะส่งคืนแถวทั้งหมดจากตารางซึ่งอาจมีมากกว่า 1,000 เรคคอร์ด เราสามารถเลือกดูเฉพาะ 10 แถวแรกได้
ข้อมูลต่อไปนี้แสดงไวยากรณ์พื้นฐานของส่วนคำสั่ง LIMIT ใน SQL:
เลือก col1, col2, ...
จาก tbl_name
จำกัด num_rows;
ในตัวอย่างนี้ เรากำลังใช้คำสั่งย่อย LIMIT ร่วมกับคำสั่ง SELECT
จากไวยากรณ์ที่กำหนด “tbl_name” หมายถึงชื่อของตารางที่เราต้องการดึงข้อมูล
“num_rows” ช่วยให้เราสามารถระบุจำนวนแถวสูงสุดที่ส่งคืนในชุดผลลัพธ์
ตัวอย่างที่ 1: จำกัดจำนวนแถว
บทบาททั่วไปและเป็นพื้นฐานที่สุดของส่วนคำสั่ง LIMIT คือการตั้งค่าจำนวนแถวสูงสุดที่รวมอยู่ในชุดผลลัพธ์
สมมติว่าเราต้องการใช้ตาราง “ฟิล์ม” จากฐานข้อมูลตัวอย่างสกิลา อย่างไรก็ตาม เนื่องจากเราไม่ต้องการดึงข้อมูลแถวที่เกี่ยวข้องทั้งหมด เราจึงสามารถเลือก 10 แถวแรกตามที่แสดงในตัวอย่างประโยคต่อไปนี้:
SELECT * จากฟิล์มจำกัด 10 -
เมื่อเรารันการสืบค้นที่กำหนดแล้ว เราควรจะได้ผลลัพธ์ดังนี้:
ในตัวอย่างนี้ เราใช้ส่วนคำสั่ง LIMIT เพื่อจำกัดชุดผลลัพธ์ไว้ที่ 10 แถว ซึ่งจะดึงข้อมูล 10 แถวแรกจากผลลัพธ์
ตัวอย่างที่ 2: การใช้ค่า OFFSET
ในบางกรณี เราอาจต้องการข้ามหรือละเว้นแถวจำนวนหนึ่ง ตัวอย่างเช่น สมมติว่าเราต้องการดึงองค์ประกอบเพียงห้าองค์ประกอบ แต่เราต้องการเริ่มต้นที่ตำแหน่ง 20 เราสามารถใช้พารามิเตอร์ OFFSET ซึ่งช่วยให้เราบอก LIMIT clause ว่าเราต้องการเริ่มต้นตำแหน่งใด
สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการใช้การแบ่งหน้าในชุดข้อมูลขนาดใหญ่ดังที่แสดงในตัวอย่างต่อไปนี้:
เลือก film_id, ชื่อ, release_year, `ความยาว` จากภาพยนตร์จำกัด 10 ชดเชย ยี่สิบ -
สิ่งนี้ควรส่งคืน 10 แถวโดยเริ่มจากตำแหน่ง 20 ดังนี้:
ดังที่คุณเห็นจากผลลัพธ์ที่กำหนด การเริ่มต้น “film_id” เริ่มต้นที่ตำแหน่ง 21 และดำเนินต่อไปยังตำแหน่ง 30
ตัวอย่างที่ 3: การใช้คำสั่งซื้อตามข้อ
การใช้งานทั่วไปอีกอย่างหนึ่งของคำสั่งย่อย LIMIT คือการใช้ร่วมกับคำสั่งย่อย ORDER BY สิ่งนี้ช่วยให้เราดึงข้อมูลจำนวนแถวเฉพาะที่อิงตามลำดับเฉพาะได้ ซึ่งอาจรวมถึงการเรียงลำดับพื้นฐาน (จากน้อยไปหามากหรือจากมากไปน้อย) ฯลฯ
ตัวอย่างเช่น สมมติว่าเราต้องการดึงภาพยนตร์ที่ยาวที่สุด 10 อันดับแรกจากตาราง 'ภาพยนตร์' เราสามารถใช้คำสั่งย่อย ORDER BY เพื่อเรียงลำดับค่าตามความยาว จากนั้นจำกัด 10 แถวแรก
ตัวอย่างมีดังนี้:
เลือก f.film_id, f.title, f.lengthจากภาพยนตร์ฉ
คำสั่ง ตามความยาว DESC
จำกัด 10 -
ในกรณีนี้ เราใช้คำสั่งย่อย ORDER BY เพื่อเรียงลำดับแถวจากมากไปน้อย (จากมากไปน้อย) จากนั้นดึงข้อมูล 10 แถวแรกโดยใช้คำสั่งย่อย LIMIT
ชุดผลลัพธ์จะเป็นดังนี้:
ได้แล้ว!
บทสรุป
ในโพสต์นี้ เราได้เรียนรู้พื้นฐานและคุณลักษณะขั้นสูงของการทำงานกับส่วนคำสั่ง LIMIT ในฐานข้อมูล SQL