关于selectdistinctcount的信息
select distinct 如何嵌套查询?
distinct和group by同用?你这里distinct多余用
select a.管理员,a.次数 from
(select 管理员,使用日期,count(*) as 次数 from AA group by 管理员,使用日期) a
---------------------------------
select a.管理员,count(*) from
(select 管理员,使用日期 from AA group by 管理员,使用日期) a
MySQL中distinct和count(*)的使用方法比较
首先对于MySQL的DISTINCT的关键字的一些用法:
1.在count
不重复的记录的时候能用到,比如SELECT
COUNT(
DISTINCT
id
)
FROM
tablename;就是计算talbebname表中id不同的记录有多少条。
2,在需要返回记录不同的id的具体值的时候可以用,比如SELECT
DISTINCT
id
FROM
tablename;返回talbebname表中不同的id的具体的值。
3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义,比如SELECT
DISTINCT
id,
type
FROM
tablename;实际上返回的是
id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样。
4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的。
5.其实还有另外一种解决方式,就是使用,SELECT
id,
type,
count(DISTINCT
id)
FROM
tablename,虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),返回的结果是只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了。
DISTINCT的效率:
SELECT
id,
type,
count(DISTINCT
id)
FROM
tablename;虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),SELECT
id,
type
from
tablename
group
by
id;这样貌似也可以,用distinct的时候,如果它有索引,mysql会把它转成group
by的方式执行。
MySQL数据库对于COUNT(*)的不同处理会造成不同的结果,比如,
执行:SELECT
COUNT(*)
FROM
tablename;即使对于千万级别的数据mysql也能非常迅速的返回结果。
执行:
SELECT
COUNT(*)
FROM
tablename
WHERE…..;mysql的查询时间开始攀升。
网上查资料得知:当没有WHERE语句对于整个mysql的表进行count运算的时候,MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索,从而得出count的数值,因此加上where条件的查询速度就会很慢了。
以上关于MySQL数据库的distinct以及count(*)的使用就介绍到这里了,希望本次的介绍能够带给您一些收获。
sql 求差
select a.dingzhi-b.qvxiao from
(select count(*) as dingzhi from tb where [用户id]='001' and [用户订购关系]=1) a,
(select count(*) as qvxiao from tb where [用户id]='001' and [用户订购关系]=2) b
=============================
给你个思路,
用存储过程解决,先建个临时表#tb_yuanlai将原来的表拷贝进去,
然后在原来的表中用select distinct [用户id] from 原来表语句在建立个临时表#tb,然后用游标将临时表中#tb中一条条的[用户id]数据取出来用最上面的语句去减,并判断将结果,最后在写入一个新的临时表中,用select 语句返回这个最终临时表的所有结果即可。
我暂时只想到这个方法,有不妥之处还请高手们指点了。希望能帮到你
asp 一条命令 sql="select distinct c,count(c) as cc from fache.....
by 字段名
如果你想上一页选择,那你传过来的值直接用字段名就可以了。
比如,ZZZ传过来的是C,那就相当于你原来的写法了。
zzz=request("zzz")
sql="select distinct c,count(c) as cc from fache where a like '%"ss"%' group by "zzz
你要C,全部用变量值 啊。。
sql="select distinct “zzz",count(“zzz") as cc from fache where a like '%"ss"%' group by "zzz
复制的话注意看空格和字符,,我这里打,不怎么看得出的。
select distinct count 的用法
楼主已经自己把问题解决了,
我来再补充一下
count 是能和distinct合用 的.
具体使用方式是
select
hzxm,
count( DISTINCT xm)
from
gyjm
where
hbh='6252' and hkbbh='609000343'
group by
hzxm;
上面的 count( DISTINCT xm)
意思就是, 如果在按照 hzxm 分组的时候, 遇到 重复的 xm , 那么只计算一次。
实际应用的例子, 就是 比如我要查询 本月的考勤
每个员工本月的 打卡次数。
可能某人 某天刷了 2下或者3下。
但是 count( DISTINCT 打卡日期 ) 将只计算1次。
为什么select distinct语句不对呢==
单从语法上来看,你少一个)
select count(distinct grbh) rs
from si.aged_account
where grbh not in
(select grbh from si.aged_account a
where exists
(select 'x' from si.orgn_natl where dwbh=a.dwbh and sbjgbh='372500')
and to_char(fsrq,'yyyymmdd')='20100101')
)