แผน ANSI / ISO สำหรับการ จำกัด มาตรฐานหรือไม่


12

ปัจจุบันมีแผนที่จะสร้างมาตรฐานวิธีที่ดีที่สุดวิธีหนึ่งในการ จำกัด จำนวนผลลัพธ์ที่ส่งคืนโดยแบบสอบถามหรือไม่

คำถามล้นสแต็คที่มีทางเลือก ANSI SQL กับคำหลัก MYSQL LIMIT หรือไม่ แสดงวิธีการต่างๆในการจัดการพฤติกรรมนี้ในภาษาต่างๆ:

DB2 -- select * from table fetch first 10 rows only 
Informix -- select first 10 * from table 
Microsoft SQL Server and Access -- select top 10 * from table 
MySQL and PostgreSQL -- select * from table limit 10 
Oracle -- select * from (select * from table) where rownum <= 10

ฉันไม่ได้เล่นในฐานข้อมูลที่บ่อยครั้งดังนั้นฉันจึงพูดจากความไม่รู้ที่นี่ แต่ดูเหมือนว่านี่เป็นฟังก์ชั่นที่สำคัญมาก - อย่างน้อยก็สำคัญพอที่ฉันจะเกาหัวเมื่อเห็นว่ามันถูกทิ้งไว้กับผู้ขาย

คำตอบ:


20

มาตรฐาน SQL แบบร่างล่าสุดที่ฉันสามารถค้นหาได้บนอินเทอร์เน็ต (ลงวันที่ 21/12/2554) มีรายการดังต่อไปนี้สำหรับใช้ในนิพจน์แบบสอบถาม:

<result offset clause> ::=
    OFFSET <offset row count> { ROW | ROWS }

<fetch first clause> ::=
    FETCH { FIRST | NEXT } [ <fetch first quantity> ] { ROW | ROWS } { ONLY | WITH TIES }

5
นี่คือสิ่งที่ Postgres อ้างสิทธิ์ด้วยตนเอง: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name

อ่าเจ๋งมาก ฉันชอบคำหลักคำหลัก LIMIT จาก MySQL และ PSQL แต่ฉันไม่ได้แต่งงานกับมันและมันจะเป็นการดีถ้าฉันได้ใช้แบบสอบถามข้าม RDBMS
chucksmash

3
@ chucksmash ยกเว้นใน MySQL แน่นอน เพราะพวกเขาไม่ชอบมาตรฐาน (Ref: GROUP BY.)
Aaron Bertrand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.