java 取结果集的最后三项,

数据库是oracle 10G

我现在插入数据:

insert into you (id,name) values (1,'john1');

insert into you (id,name) values (2,'john2');

insert into you (id,name) values (3,'john3');

insert into you (id,name) values (4,'john4');

insert into you (id,name) values (5,'john5');

我想取最后三条记录,

3 john3

4 john4

5 john5

这个怎么实现呢? 请指教

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "zhang",
"zhang");
stmt = conn.createStatement();
String url = "select * from you where rownum<=3 order by id desc";

我这里只能取到前三条,取不了后三条,
rs = stmt.executeQuery(url);
while (rs.next()) {
out.print(rs.getString("id"));
out.print(rs.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}


答案1:
SELECT * FROM (SELECT * FROM you ORDER BY id DESC ) WHERE ROWNUM<=3;

如果ID是自增的,这样应该是可以的。

答案2:

应该是一个分页查询的问题
select id,name from (select id,name,rownum rn from you where rownum <= (select count(*) from you)) where rn > (select count(*) from you)-3;
最后 -3 是取数据表的最后3条,-n就是取最后几条
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值