1. 程式人生 > >解決mysql group by和count同時使用的問題

解決mysql group by和count同時使用的問題

例如這樣一個表,我想統計email和passwords都不相同的記錄的條數

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, ‘default@gmail.com', ‘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

相關推薦

解決mysql group bycount同時使用的問題

例如這樣一個表,我想統計email和passwords都不相同的記錄的條數 CREATE TABLE IF NOT EXISTS `test_users` ( `email_id` int(11) unsigned NOT NULL auto_increment, `email` char(100) N

mysql group bycount一些用法

統計 一些資訊以及每個分組的個數    SELECT  a.name, a.phone, count(*) AS sum FROM xxx AS a GROUP BY a.order_id   統計

MySQL GROUP BY GROUP_CONCAT的一些用法

1)  作用:GROUP BY 語句根據一個或多個列對結果集進行分組。 所謂的分組就是根據GROUP BY中的分組標記

mysqlgroup byorder by同時使用無效的替代方案

前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由group by和order by 引發的血案由此而生。在此做個記錄,以備不時之需。 需求(得到所有barCode的最新的一條資料) 首先,看一下整體的表結構。 

mysqlgroup byorder by同時使用無效 group_concat

                                          &nb

mysqlgroup by order by同時使用

首先,這是不可能實現的 mysql的查詢的順序 select -> from-> where->group by->having->order by. 但mysql的解析器執行順序: from-> where->group by->having->

mysql ORDER BY,GROUP BY DISTINCT原理

如果 str reat 個數 需要 是我 如何 where子句 三種 前言 除了常規的Join語句之外,還有一類Query語句也是使用比較頻繁的,那就是ORDERBY,GROUP BY以及DISTINCT這三類查詢。考慮到這三類查詢都涉及到數據的排序等操作,所以我將他們放在

mysql中使用group byorder by取每個分組中日期最大一行資料

轉載自:https://blog.csdn.net/shiyong1949/article/details/78482737 自己實際使用的時候group by 單列欄位 兩種方式獲取資料一致,博主情況未知,有待驗證多group by  在mysql中使用group by進行分組後取某一列的最大

第十九篇:Mysql兩次Group byip轉數字作比較的一次優化

業務場景:兩張表,ipconfig_group表存了單位和 ip 起始段資訊visit_info表儲存了訪問次數,失敗次數,訪問流量,使用者ip等資訊兩張表的關係為:    一個部門下有若干ip段,對應的下面表的visitorip,每個visitorip有訪問次數,失敗

解決mysql中limitin不能同時使用的問題

但是 col ima 聚集 class mys mit table span 先給出數據表 CREATE TABLE `test_tb_grade` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `USER_NAME` v

Mysqlgroup by order by 一起用時的排序問題

業務需求,需要查詢表裡不同分類下的order最大的記錄。 查看錶中的記錄: SELECT id,tid,`order`, FROM_UNIXTIME(yestime) FROM tfen WHERE tid IN(7512, 7514) ORDER BY `order` DESC ;

關於Mysql使用group byorder by函式

這兩個函式在sql中使用可以說最頻繁的,通過網上看資料和自己寫sql測試發現資料裡說的和測試結果不同,網上有些資料說group by、order by後面的列必須出現在select查詢語句中,還有order by的列必須是group by裡的,這並不準確。而且在Mysql裡測發現group

mysql GROUP BY 代替DISTINCT 遇到的問題及解決

近日在做一個數據分析時,發現DISTINCT比較慢,想通過group by來替代。然而替代並非一帆風順,在替代過程中,發現對於重複資料,group by會取第一次出現的記錄。為得到我想要的統計資料,折騰了一番。下面用例項來描述我的問題及調整過程。 場景:有一張表,記錄手機使

sql語句中GROUP BY HAVING的使用 count()

在介紹GROUP BY 和 HAVING 子句前,我們必需先講講sql語言中一種特殊的函式:聚合函式, 例如SUM, COUNT, MAX, AVG等。這些函式和其它函式的根本區別就是它們一般作用在多條記錄上。 SELECT SUM(population) FROM bbc 

with as group by 代替 count distinct,提高效能

資料庫:postgresql 背景:使用distinct在對某張表某個欄位做去重統計的時候,發現有統計特別慢(30-40s),當前表大小是400w,distinct 後大概60w sql 很簡單(出於安全考慮,欄位和表名稱都做了替換): 原sql: select count

Mysql 語句之group by, having, count

Mysql的group by, having, count 平時經常用錯,這裡舉一些使用的例子。 group by having 聚合函式count,avg,min,max,sum等 group by 根據by後面的欄位的值分組,值相

MySQL 使用group bycase when 的兩個例子

例子1 create table testScore ( tname varchar(30) null, ttype varchar(10) null, tscor int null );

mysql的order bygroup bydistinct優化

order by,group by和distinct三類操作是在mysql中經常使用的,而且都涉及到排序,所以就把這三種操作放在一起介紹。 order by的實現與優化 order by的實現有兩種方式,主要就是按用沒用到索引來區分: 1. 根據索引欄位排序,利用索引取出的

mysql group by內排序的實現以及havingwhere 條件語句查詢的區別

例如有一個 版本號的登陸日誌表,loginlog( id, LoginName, Resource, IP, LoginTime, loginversion) , id 為 自動增長欄位,loginname為登陸使用者名稱,   logintime 為最近一次登陸時間,lo

MySQL——關於MySQL分組查詢group byorder by獲取最新時間內容的方法

假如現在有一張表table,如下: 如果我們想查詢出來zhang和wang最新日期的記錄 如果我們直接使用: SELECT * FROM table GROUP BY name ORDER BY