选择最小值行而不使用rownum

时间:2014-12-25 13:17:52

标签: sql oracle rownum

我正在使用Oracle SQL,我需要一些查询帮助。

在下面的查询中,我选择一些条件简单的行(不要介意帽子类型)。从输出行,我需要选择最小值为DATE的行。为此,我使用ROWNUM

SELECT * 
FROM(
  SELECT NAME, DATE
  FROM LIST
  WHERE NAME = 'BLABLA'
  ORDER by DATE)
WHERE ROWNUM = 1;

但是,此查询必须适合任何其他SQL语言,因此我需要在不使用ROWNUM的情况下编写此查询。 是否有一种简单的方法可以在不使用ROWNUM的情况下编写此查询?

2 个答案:

答案 0 :(得分:2)

不幸的是,行限制语法differs between RDBMS

以下内容可在SqlServer,Oracle和PostGres之间移植:

SELECT * 
FROM (
  SELECT NAME, DATE, ROW_NUMBER() OVER (ORDER by DATE) AS RowNum
  FROM LIST
  WHERE NAME = 'BLABLA'
) X
WHERE RowNum = 1;

但是,其他DB的语法不同,例如MySql的LIMIT

答案 1 :(得分:1)

    select * from LIST 
    where Date=(select min(date) from LIST where Name='BLABLA' )
    and Name='BLABLA'