SQL中的记录总数统计(20分)

  • 主题发起人 主题发起人 3h
  • 开始时间 开始时间
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
eg:

With query1.sql do
begin
clear;
add('select id from mytable where id>3000');
end;
query1.open;
query1.last;
showmessage(inttostr(query1.recordcount));

用这种方法实现对符后条件记录的统计我知道,不过效率比较低。
我想,应该在SQL中会有一种象Max函数一样的语句达到那样的高效。
因为在服务器端,服务器的速度可能非常快,比在当前取资料后再
统计快些...我是这样认为的。但不知道此函数。
故求。
 
COUNT? 不过用count无法同时取资料.
 
看样子他也不想同时取资料用
Select Count(id) from mytable where id>3000
应该行
如果想同时取资料还是再加一行用两条SQL或循环累加一下吧

 
count不是将全部的ID加起来吗?

> 如果想同时取资料还是再加一行用两条SQL或循环累加一下吧
什么意思?如何用?很有兴趣。
 
3h: count是计数牙! 不是sum哦!
 
如果不需要返回数据集,仅想知道满足条件的纪录数,那么
Select Count(ID) from table where id>3000
如果需要数据集,就按你自己做的,实际上,Dataset.Recordcount极大部分是对的
没有必要Last.
 
我有一个同时计数和返回记录集的方法,不过不太正规:

1.首先确定你的ID字段不会为负数,然后:
select id from table union select -count(id) as id from table

这样返回的记录集会多一条记录,而且因为这样返回的记录集是自动排序的,
所以这条为负数的记录会排在最前面,你只要取他的绝对值就可以同时得到
总的记录数了.

同理,你不一定把他搞成负数,完全也可以把他乘以一个足够巨大的数字,这样
在返回的结果集里面他会排在最后,然后你再把他除以那个巨大的数字就可以得到了.
select id from table union select count(id)*9999999999 as id from table
 
union 是什么意思?
 
是SQL语法,把两次select的结果集连成一个结果集.
 
终于有点明白。
 
唉,我真的无话可说了

<font color=red><B>结束了</B></font>
 
后退
顶部