[高分求解]寻求通用的sql语句解决 count 和 distinct之间的矛盾

ThisFellow 2003-05-15 02:50:31
我有这样一个sql:
select distinct a ,b,c from t1
现在想用一个sql取得上面的结果集中的行数。

select count( distinct a,b,c ) from t1;
select count( a,b,c ) from t1;

都不被支持,而我需要能在各种数据库下通用的语句,所以也不能利用
select count(xx.*) from (select distinct a ,b,c from t1)xx;
这样的语句。

有什么高招?
...全文
73 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThisFellow 2003-05-29
  • 打赏
  • 举报
回复
换一个角度思考这个问题,如果对于表T1(a,b,c)
我以a,b分组,是否有办法知道总共有几组呢?
ThisFellow 2003-05-22
  • 打赏
  • 举报
回复
必要肯定是有必要的。
不现实?这个我就不知道了,所以才来请教此中高手。
jiezhi 2003-05-19
  • 打赏
  • 举报
回复
你想写所有数据库通用的sql?
不现实,也没有必要.
ThisFellow 2003-05-19
  • 打赏
  • 举报
回复
因为视图的创建会隐含事务的提交,所以不能用视图。
aniugecn 2003-05-17
  • 打赏
  • 举报
回复
用视图实现吧
ThisFellow 2003-05-16
  • 打赏
  • 举报
回复
多谢大家,不过最重要的一个问题是:
Interbase不像Oracle一样支持 select * from (select * ....)
瓜哥makey 2003-05-15
  • 打赏
  • 举报
回复
select count(*) from (select a,b,c from table group by a,b,c) 用group by吧,好加索引,别用distinct.
Lastdrop 2003-05-15
  • 打赏
  • 举报
回复
to:ThisFellow(ThisFellow)
其实你得到的是count值,而非拼接的字符串,所以应该不违背你们的原则。我不知道a,b,c是否都是数字,如果是这样,也可以count( distinct a*1000000+b*1000+c )这样.
maohaisheng 2003-05-15
  • 打赏
  • 举报
回复
使用group by也可以获得distinct 的纪录

create table dis (a char(10),b char(10),c char(10)) ;

insert into dis values (1,2,3);
insert into dis values (1,2,3);
insert into dis values (1,2,3);
insert into dis values (2,3,4);
insert into dis values (3,4,5);

select count(*) from
(
select * from dis group by a,b,c
);
ThisFellow 2003-05-15
  • 打赏
  • 举报
回复
这是个办法,不过因为现在对程序的效率和通用性有很高要求,所以不能用这种办法。

另外,还有一个和客户有关的原因。
我们现在的项目是在改修别人的系统,而我们提出的其中一个理由就是原来的作者使用了很多字符串连接的方法,造成了很多隐蔽的bug.我们提出,在程序内部,永远保证结构数据的结构,在IO中,有必要以字符方式做系列化的地方,一定要对分割符做转义符。
Lastdrop 2003-05-15
  • 打赏
  • 举报
回复
不过,||只有Oracle支持! 所以看看能不能找到一种组合a,b,c的方法。
Lastdrop 2003-05-15
  • 打赏
  • 举报
回复
可以试试select count( distinct a||'**'||b||'**'||c ) from t1;

其中'**'是为了避免不同的a,b,c会有相同的a||b||c,你也可以选用任何不会在a,b,c中出现的字符。
ThisFellow 2003-05-15
  • 打赏
  • 举报
回复
interbase不支持呀

加分了
w_tsinghua 2003-05-15
  • 打赏
  • 举报
回复
select count(*) from (select distinct a ,b,c from t1)xx;
所有的流行数据库应该支持

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧