获取Oracle Sql的第一行

时间:2014-05-11 20:23:04

标签: sql oracle

我试图只获得此查询的第一行。查询不返回顶行。这是查询。

SELECT DISTINCT name, age
FROM donates, persons
WHERE name = donor 
AND name IN (SELECT receiver FROM donates)
AND ROWNUM <= 1
ORDER BY age DESC;

当我运行查询时,它返回Chirs |35。 没有ROWNUM <=1这就是表格的样子。

NAME   |  AGE
-------------
george |  62
Chris  |  35
zara   |  24

3 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用子查询,因为在订单之前正在查看rownum:

select * from (
SELECT DISTINCT name, age
 FROM donates, persons
 WHERE name = donor 
 AND name IN (SELECT receiver FROM donates)
 ORDER BY age DESC
) where ROWNUM <= 1;

如需更长时间阅读http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

答案 1 :(得分:1)

尝试使用ROWID而不是ROWNUM,如下所示:

SELECT * FROM TABLE_NAME WHERE ROWID = (SELECT MIN(ROWID) FROM TABLE_NAME)

答案 2 :(得分:0)

您正试图获得年龄最小的那个,所以我建议您使用Min sql内置函数:

SELECT name, Min(age)
FROM donates, persons
WHERE name = donor 
AND name IN (SELECT receiver FROM donates)

避免rownum是一种很好的做法。在这里,您可以获得更加语义和高效的查询。

希望它有所帮助, 此致