# re: 关于数据库count的问题 回复 更多评论
2006-11-16 12:16 by
distinct作用是去掉重复数据.
例如:表 A 数据如下
1 xc cn
1 xc cn
2 xc cn
2 xc cn
3 xc cn
3 xc cn
4 xc cn
4 xc cn
4 xc cn
select distinct * from A;
得出的结论就是
1 xc cn
2 xc cn
3 xc cn
4 xc cn
这样明白吧??
# re: 关于数据库count的问题 回复 更多评论
2006-11-16 16:03 by
谢谢你的回复,这个我明白,但我还有疑问,可能仁兄没有看懂我的意思。
表A,数据如下
1 xc cn
1 xc ae
1 xc cn
2 dd cn
select distinct * from A;
返回
1 xc cn
1 xc ae
2 dd cn
select dinstinct id,name from A;
返回
1 xc cn
2 dd cn
这些我都知道。而现在我想要的是写一条sql语句,计算返回符合要求的数据库record的条数,就是(如以上的数据)我要dinstinct id 和name 两个字段,并且返回数据2。
select count(distinct 'id&name') as acount from A 返回的值为2。呵呵
# re: 关于数据库count的问题 回复 更多评论
2006-11-16 17:05 by
select count(distinct id||name) as count from a
# re: 关于数据库count的问题 回复 更多评论
2006-11-16 20:17 by
谢了,可以成功执行。可我原本的问题比这复杂,我一个联合查询语句如下:
SELECT count(distinct A.C_MAIN_REF || A.C_UNIT_CODE || A.C_TRX_STATUS) as counter
FROM TRX_AUTH_LIST A ,TRX_MATRIX_LIST B WHERE A.C_MAIN_REF = 'xcblcx'
AND A.C_MAIN_REF = B.C_MAIN_REF
这条语句能成功执行,而下面这条语句却不行:
SELECT count(distinct A.C_MAIN_REF || A.C_UNIT_CODE || A.C_TRX_STATUS || A.I_AUTH_LEVEL) as counter
FROM TRX_AUTH_LIST A ,TRX_MATRIX_LIST B WHERE A.C_MAIN_REF = 'xcblcx'
AND A.C_MAIN_REF = B.C_MAIN_REF
差别在于加了一个A.I_AUTH_LEVEL的字段,此字段为integer类型,就不能成功,如果换一个字段为charactor的就可以。
难道查询字段也有区别?望指点
# re: 关于数据库count的问题 回复 更多评论
2006-11-18 09:25 by
我的意思是:如果有以下两条语句
语句一:SELECT count(distinct A.C_MAIN_REF || A.C_UNIT_CODE || A.C_TRX_STATUS || A.I_AUTH_LEVEL) as counter
FROM TRX_AUTH_LIST A ,TRX_MATRIX_LIST B WHERE A.C_MAIN_REF = 'xcblcx'
AND A.C_MAIN_REF = B.C_MAIN_REF
语句二:SELECT count(distinct A.C_MAIN_REF || A.C_UNIT_CODE || A.C_TRX_STATUS || A.C_USER_ID) as counter
FROM TRX_AUTH_LIST A ,TRX_MATRIX_LIST B WHERE A.C_MAIN_REF = 'xcblcx'
AND A.C_MAIN_REF = B.C_MAIN_REF
第一条语句能成功执行,而第二条则会报错。两条语句的差别在于count函数的内部最后一个字段,(语句一:|| A.I_AUTH_LEVEL 语句二:|| A.C_USER_ID),I_AUTH_LEVEL 为integer,而C_USER_ID为charactor,我所能找到的差别就在此,我就问为什么语句二为什么不能执行成功,难道字段类型也有影响??