我试图只获得此查询的第一行。查询不返回顶行。这是查询。
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
答案 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是一种很好的做法。在这里,您可以获得更加语义和高效的查询。
希望它有所帮助, 此致