Is there an ANSI SQL compliant version of SQL SERVER's SELECT TOP n
?
SQL is a popular relational database language first standardized in 1986 by the American National Standards Institute (ANSI). Since then, it has been formally adopted as an International Standard by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC).
The TOP 1 means to only return one record as the result set. which record is returned, depends on the column that is specified in the order by clause. If you want to find the record with the minimum value for a particular column, you would query the record with the ORDER BY being ascending (ASC).
The statement 'select 1' from any table name means that it returns only 1. For example, If any table has 4 records then it will return 1 four times.
ANSI/ISO SQL:2003 introduced windowing functions:
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY age ASC) AS rownum,
person_id,
person_name,
age
FROM person
) AS foo
WHERE rownum <= 3
Microsoft SQL Server has supported this syntax since SQL Server 2005. http://msdn.microsoft.com/en-us/library/ms189798(v=sql.90).aspx
ANSI/ISO SQL:2008 introduced a simpler syntax for FETCH FIRST
, which may be more analogous to Microsoft/Sybase TOP
syntax:
SELECT person_id, person_name, age FROM person
FETCH FIRST 3 ROWS ONLY
Microsoft does not yet support this syntax. See also http://en.wikipedia.org/wiki/Select_(SQL)#Limiting_result_rows
If you're still using Microsoft SQL Server 2000, you should read a question I posted a while back about doing "paging" style queries: Emulate MySQL LIMIT clause in Microsoft SQL Server 2000
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With