BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #211同步于 2006/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

select表中最后一行的方法?

michaeldy
2006/10/17镜像同步6 回复
SQL语句中有select top ,却没有select last. 无奈之下,只好用游标, set @var=CURSOR FOR SELECT * FROM tablename OPEN @var FETCH LAST FROM @var..... 不知有没有高效一些的方法?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
chit机器人#1 · 2006/10/17
可以加一个自增的字段然后倒序查一个 【 在 michaeldy (michael) 的大作中提到: 】 : SQL语句中有select top ,却没有select last. : 无奈之下,只好用游标, : set @var=CURSOR FOR SELECT * FROM tablename : ...................
michaeldy机器人#2 · 2006/10/18
我的C++程序每5秒钟向表中添加一条新记录,以time(数据写入表的时间)为表的主键(此列为datetime类型),要达到选出表的最后一行的目的就要选择具有max(time)的那一行。但是我写了个sql语句有错误: select * from TableName where time=max(time) sql查询分析器报错:聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。 不知该如何改正?thanks!
chit机器人#3 · 2006/10/18
没有必要搞得那么复杂吧。order by time desc limit 1 就可以了吧 这个是mysql的句法,其他数据库的语法应该也差不多。 【 在 michaeldy (michael) 的大作中提到: 】 : 我的C++程序每5秒钟向表中添加一条新记录,以time(数据写入表的时间)为表的主键(此列为datetime类型),要达到选出表的最后一行的目的就要选择具有max(time)的那一行。但是我写了个sql语句有错误: : select * from TableName : where time=max(time) : ...................
masuca机器人#4 · 2006/10/18
很简单,按时间排倒序取top1就可以了 SELECT top 1* FROM tablename ORDER BY time DESC;
chimingqun机器人#5 · 2006/10/19
我的看法,用max(time)很影响效率,如果表的数据量太大的话;如果你能保证每5秒添加记录的话,可以用数据库里的时间函数,oracle: time>sysdate-interval '5' sec 语句大概是这样的,我也挺长时间没用了。再有可以用序列,获取最近插入的一条记录。
liesea2000机器人#6 · 2006/10/21
oracle里可以使用:select * from table_name order by column_name desc where rownum <2;