mysql DISTINCT的用法

http://justcoding.iteye.com/blog/2116837

SELECT count(*) FROM tablename;百万级别的数据也能很快返回结果,但是如果加了where条件之后速度直接慢下来了

当没有WHERE语句对于整个mysql的表进行count运算的时候
MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索
从而得出count的数值

1、利用DISTINCT统计不重复的记录

如:SELECT COUNT( DISTINCT id ) FROM tablename;//计算talbebname表中id不同的记录有多少条

2、返回记录不同的id的具体值

SELECT DISTINCT id FROM tablename;

注意:2的这种查发只能用在一个字段上,如果是SELECT DISTINCT id,name FROM tablename;查询出来的结果返回的是 id与name同时相同才会被过滤,只有id或者name有相同的是不会过滤掉的;

mysql4.1以上可以用group_concat

另一种解决办法是:SELECT id, type, count(DISTINCT id) FROM tablename group by id;//一定要加group by id

或者select id,type from a group by id;这样也行吖

用distinct的时候,如果它有索引,mysql会把它转成group by的方式执行

 mysql无法远程连接:1看给没给访问权限 服务其本地用外网账号登陆

 -h *.*.*.* 直接写外网ip
能登陆的话就看下端口是否正确

2以上都正确那就防火墙阻止或者ip地址不对

posted @ 2017-02-24 16:44  虚无缥缈的云  阅读(6773)  评论(0编辑  收藏  举报