这几天用到mysql数据库,对于count(*)用法知之甚少,无奈要反复用到,所以对于count的用法搜集了不少资料,总结一些比较常用的用法,在此,也特别感谢网络上诸多朋友的分享。
1. count不重复的记录条数
SELECT COUNT(DISTINCT id) FROM tablename;
2. 需要返回记录不同的id的具体值
SELECT DISTINCT id FROM tablename;
3. 上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如 SELECT DISTINCT id,type FROM tablename;
实际上返回的是id 与 type 同时不相同的结果,也就是DISTINCT 同时作用了两个字段, 必须得id 与 type 都相同的才被排除了,与我们期望的可能不一样。
4. 这时候可以考虑使用group_concat 函数来进行排除,不过这个mysql函数是在mysql 4.1以上才支持的
5. 其实还有另外一种解决方法,就是使用
SELECT id,type,count(DISTINCT id) FROM tablename;
显然这样的返回结果多了一列无用的count数据(或许你就需要这个数据)
返回的结果是, 只有id不同的所有结果和上面的4类型可以互补使用,看你需要什么数据了
PS:
SELECT count(*) FROM tablename; 即使对于千万级别的数据mysql也能非常迅速的处理
而对于
SELECT count(*) FROM tablename WHERE… mysqsl的查询时间开始攀升