繁体   English   中英

获取Oracle Sql的第一行

[英]Get first row in Oracle Sql

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

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

我认为最好的方法是使用子查询,因为在订单之前查看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

尝试使用ROWID而不是像这样的ROWNUM

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

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

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

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

希望它有所帮助,问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM