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

