LIMIT standardizasyonu için ANSI / ISO planları?


12

Şu anda bir sorgu tarafından döndürülen sonuç sayısını sınırlamanın en iyi yollarından birini standartlaştırmayı planlıyor musunuz?

Yığın taşması sorusu MYSQL LIMIT anahtar sözcüğüne ANSI SQL alternatif var mı? bu davranışı farklı dillerde ele almanın çeşitli yollarını listeler:

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

DB'lerde sık sık oynamıyorum, bu yüzden burada cehaletten konuşuyorum, ancak bu oldukça önemli bir işlevsellik gibi görünüyor - en azından satıcılara bırakıldığını gördüğümde başımı kaşıracağım kadar önemli.

Yanıtlar:


20

İnternette bulabildiğim en son taslak SQL standardı (21/12/2011 tarihli), bir sorgu ifadesinde kullanılabilir:

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

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


Ahh, çok havalı. MySQL ve PSQL LIMIT anahtar kelime anahtar kelimesini sevdim ama onunla evli değilim ve sorgularım çapraz bir RDBMS şekilde çalışmak için bir rahatlama olacak.
chucksmash

3
@chucksmash MySQL hariç, elbette. Çünkü standartları sevmiyorlar. (Ref: GROUP BY.)
Aaron Bertrand
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.