关于selectdistinctcount的信息

http://www.itjxue.com  2023-01-26 03:37  来源:未知  点击次数: 

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')

)

(责任编辑:IT教学网)

更多

推荐杀毒防毒文章