使用GROUP BY的時候如何統(tǒng)計記錄條數(shù) COUNT(*) DISTINCT
更新時間:2011年04月23日 22:38:19 作者:
在有g(shù)roup by的時候,如何統(tǒng)計結(jié)果記錄的數(shù)量?需要的朋友可以參考下。
例如這樣一個表,我想統(tǒng)計email和passwords都不相同的記錄的條數(shù)
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, ‘jims@gmail.com', ‘1e48c4420b7073bc11916c6c1de226bb'),
(2, ‘jims@yahoo.com.cn', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(3, ‘default@gmail.com', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(4, ‘jims@gmail.com', ”),
(5, ‘jims@gmail.com', ”);
通常我們的做法是這樣
SELECT COUNT(*) FROM test_users WHERE 1 = 1 GROUP BY email,passwords
這樣的結(jié)果是什么呢?
COUNT(*)
1
2
1
1
顯然這不是我要的結(jié)果,這樣統(tǒng)計出來的是相同email和passwords的各個記錄數(shù)量之和,下面這樣就可以了
SELECT COUNT(DISTINCT email,passwords) FROM `test_users` WHERE 1 = 1
當(dāng)然在php里面也可以用mysql_num_rows來獲取記錄的條數(shù),但是這樣的效率不高,可以參考這篇文章
mysql_num_rows VS COUNT 效率問題分析
復(fù)制代碼 代碼如下:
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, ‘jims@gmail.com', ‘1e48c4420b7073bc11916c6c1de226bb'),
(2, ‘jims@yahoo.com.cn', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(3, ‘default@gmail.com', ‘5294cef9f1bf1858ce9d7fdb62240546′),
(4, ‘jims@gmail.com', ”),
(5, ‘jims@gmail.com', ”);
通常我們的做法是這樣
復(fù)制代碼 代碼如下:
SELECT COUNT(*) FROM test_users WHERE 1 = 1 GROUP BY email,passwords
這樣的結(jié)果是什么呢?
復(fù)制代碼 代碼如下:
COUNT(*)
1
2
1
1
顯然這不是我要的結(jié)果,這樣統(tǒng)計出來的是相同email和passwords的各個記錄數(shù)量之和,下面這樣就可以了
復(fù)制代碼 代碼如下:
SELECT COUNT(DISTINCT email,passwords) FROM `test_users` WHERE 1 = 1
當(dāng)然在php里面也可以用mysql_num_rows來獲取記錄的條數(shù),但是這樣的效率不高,可以參考這篇文章
mysql_num_rows VS COUNT 效率問題分析
相關(guān)文章
PHP中兩個float(浮點(diǎn)數(shù))比較實(shí)例分析
這篇文章主要介紹了PHP中兩個float(浮點(diǎn)數(shù))比較,以完整實(shí)例形式分析了bccomp函數(shù)用于浮點(diǎn)數(shù)比較的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09php5中date()得出的時間為什么不是當(dāng)前時間的解決方法
從php5.10開始,php中加入了時區(qū)的設(shè)置,在php中顯示的時間都是格林威治標(biāo)準(zhǔn)時間,這就造成了我們 中國的用戶會差八個小時的問題!2008-06-06簡單談?wù)刾hp中ob_flush和flush的區(qū)別
本文簡單的對php中ob_flush和flush進(jìn)行了對比分析,得出了他們之間的區(qū)別,給需要的小伙伴參考下。2014-11-11php下實(shí)現(xiàn)一個阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字的函數(shù)
最近因需要,寫了個“阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字的函數(shù)”。搜索了精華區(qū)只見到一個類似的。 感覺到我的算法不錯,所以貼出來共享一下2008-07-07php使用PDO下exec()函數(shù)查詢執(zhí)行后受影響行數(shù)的方法
這篇文章主要介紹了php使用PDO下exec()函數(shù)查詢執(zhí)行后受影響行數(shù)的方法,結(jié)合實(shí)例形式分析了php在使用pdo進(jìn)行增刪改操作時exec()函數(shù)查詢操作執(zhí)行后受影響行數(shù)的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2017-03-03