使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
例如这样一个表,我想统计email和passwords都不相同的记录的条数
INSERT INTO `test_users` (`email_id`, `email`, `passwords`) VALUES
(1, ‘[email protected]', ‘1e48c4420b7073bc11916c6c1de226bb'),
(2, ‘[email protected]', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(3, ‘[email protected]', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(4, ‘[email protected]', ”),
(5, ‘[email protected]', ”);
通常我们的做法是这样
这样的结果是什么呢?
显然这不是我要的结果,这样统计出来的是相同email和passwords的各个记录数量之和,下面这样就可以了
当然在php里面也可以用mysql_num_rows来获取记录的条数,但是这样的效率不高,可以参考这篇文章
mysql_num_rows VS COUNT 效率问题分析
代码如下:
CREATE TABLE IF NOT EXISTS `test_users` ( `email_id` int(11) unsigned NOT NULL auto_increment, `email` char(100) NOT NULL, `passwords` char(64) NOT NULL, PRIMARY KEY (`email_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
INSERT INTO `test_users` (`email_id`, `email`, `passwords`) VALUES
(1, ‘[email protected]', ‘1e48c4420b7073bc11916c6c1de226bb'),
(2, ‘[email protected]', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(3, ‘[email protected]', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(4, ‘[email protected]', ”),
(5, ‘[email protected]', ”);
通常我们的做法是这样
代码如下:
SELECT COUNT(*) FROM test_users WHERE 1 = 1 GROUP BY email,passwords
这样的结果是什么呢?
代码如下:
COUNT(*) 1 2 1 1
显然这不是我要的结果,这样统计出来的是相同email和passwords的各个记录数量之和,下面这样就可以了
代码如下:
SELECT COUNT(DISTINCT email,passwords) FROM `test_users` WHERE 1 = 1
当然在php里面也可以用mysql_num_rows来获取记录的条数,但是这样的效率不高,可以参考这篇文章
mysql_num_rows VS COUNT 效率问题分析
相关推荐
Rain 2020-06-25
88570299 2020-06-18
JasonYeung 2020-06-11
sunnyJam 2020-04-03
llwang0 2020-05-06
winmeanyoung 2020-04-11
vanturman 2020-04-08
keepdoingit 2020-02-23
mmyCSDN 2020-02-10
stulen 2020-01-21
zhouyuqi 2020-01-20
zhiyuan0 2020-01-18
zhangpan 2020-01-10
nanbiebao 2020-01-10
疯狂紫萧 2020-01-08
水痕 2019-12-05
peterlee 2011-07-26
codeAB 2019-10-31