sql distinct多列筛选重复数据问题
时间:2015-02-22 15:18 来源:linux.it.net.cn 作者:IT
有关mysqlcount(*)与distinct语句的用法,在统计数据条目时如何排除重复,select distinct语句的用法,distinct关键字用法技巧。
mysql对于count(*)的不同处理会造成不同的结果。
执行语句:
select count(*) from tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
对于:
select count(*) from tablename where.....
mysql的查询时间开始攀升
当没有where语句对于整个mysql的表进行count运算时,myisam类型的表中保存有总的行数,而当添加有where限定语句时,mysql需要对整个表进行检索,从而得出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类型可以互补使用。
(责任编辑:IT)
有关mysqlcount(*)与distinct语句的用法,在统计数据条目时如何排除重复,select distinct语句的用法,distinct关键字用法技巧。 mysql对于count(*)的不同处理会造成不同的结果。
执行语句:
select count(*) from tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
对于:
select count(*) from tablename where.....
当没有where语句对于整个mysql的表进行count运算时,myisam类型的表中保存有总的行数,而当添加有where限定语句时,mysql需要对整个表进行检索,从而得出count的数值。
附,mysql distinct关键字用法技巧:
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类型可以互补使用。 (责任编辑:IT) |