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地址不对

转载于:https://www.cnblogs.com/lichihua/p/6439195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值