Kế hoạch ANSI / ISO cho tiêu chuẩn hóa LIMIT?


12

Hiện tại có kế hoạch tiêu chuẩn hóa một cách tốt nhất để giới hạn số lượng kết quả được trả về bởi một truy vấn không?

Câu hỏi tràn ngăn xếp tại Có ANSI SQL thay thế cho từ khóa MYSQL LIMIT không? liệt kê các cách khác nhau để xử lý hành vi này bằng các ngôn ngữ khác nhau:

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

Tôi không chơi DB thường xuyên vì vậy tôi đang nói về sự thiếu hiểu biết ở đây, nhưng có vẻ như đây là một chức năng khá quan trọng - ít nhất là đủ quan trọng để tôi gãi đầu khi thấy nó bị bỏ lại cho các nhà cung cấp.

Câu trả lời:


20

Tiêu chuẩn SQL dự thảo mới nhất mà tôi có thể tìm thấy trên internet (ngày 21/12/2011) có sẵn để sử dụng trong biểu thức truy vấn:

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

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

5
Đây cũng là những gì mà hướng dẫn sử dụng của Postgres tuyên bố: postgresql.org/docs/civerse/static/sql-select.html#Query-LIMIT
a_horse_with_no_name 14/12/12

À, rất tuyệt. Tôi thích từ khóa LIMIT từ MySQL và PSQL nhưng tôi không kết hôn với nó và sẽ thật nhẹ nhõm khi các truy vấn của tôi hoạt động theo cách RDBMS chéo.
chucksmash

3
@chucksmash Ngoại trừ trên MySQL, tất nhiên. Bởi vì họ không thích tiêu chuẩn. (Tham khảo: NHÓM THEO.)
Aaron Bertrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.