MySQL 里面的Where 和Having和Count 和distinct和Group By對比


mysql> select accid as uid,date(datetime) AS datetime from game.logLogin GROUP BY accid HAVING datetime='2013-8-20';
+---------+------------+
| uid     | datetime   |
+---------+------------+
| 1000010 | 2013-08-20 |
| 1000012 | 2013-08-20 |
+---------+------------+
2 rows in set (0.00 sec)

而實際的例子是

mysql> select accid as uid,date(datetime) AS datetime from game.logLogin HAVING datetime='2013-8-20';
+---------+------------+
| uid     | datetime   |
+---------+------------+
| 1000004 | 2013-08-20 |
| 1000004 | 2013-08-20 |
| 1000001 | 2013-08-20 |
| 1000000 | 2013-08-20 |
| 1000004 | 2013-08-20 |
| 1000004 | 2013-08-20 |
| 1000012 | 2013-08-20 |
| 1000010 | 2013-08-20 |
| 1000000 | 2013-08-20 |
| 1000002 | 2013-08-20 |
| 1000006 | 2013-08-20 |
| 1000003 | 2013-08-20 |
| 1000003 | 2013-08-20 |
| 1000012 | 2013-08-20 |
| 1000003 | 2013-08-20 |
|       0 | 2013-08-20 |
| 1000012 | 2013-08-20 |
+---------+------------+
17 rows in set (0.00 sec)

用大腿想都會不對

mysql> select distinct accid as uid from (select accid,date(datetime) AS datetime from game.logLogin HAVING datetime='2013-8-20') as t;
+---------+
| uid     |
+---------+
| 1000004 |
| 1000001 |
| 1000000 |
| 1000012 |
| 1000010 |
| 1000002 |
| 1000006 |
| 1000003 |
|       0 |
+---------+
9 rows in set (0.00 sec)

當然如何不用 HAVING 和 DISTINCT 和 COUNT 還有GROUP By 的話是可以找出記錄的

mysql> select accountID as uid,date(signTime) AS signTime from platform.account HAVING signTime='2013-8-20';
+---------+------------+
| uid     | signTime   |
+---------+------------+
| 1000013 | 2013-08-20 |
| 1000014 | 2013-08-20 |
+---------+------------+
2 rows in set (0.00 sec)

mysql> select accountID as uid,date(signTime) AS signTime from platform.account HAVING signTime='2013-8-19';
+---------+------------+
| uid     | signTime   |
+---------+------------+
| 1000000 | 2013-08-19 |
| 1000001 | 2013-08-19 |
| 1000002 | 2013-08-19 |
| 1000003 | 2013-08-19 |
| 1000004 | 2013-08-19 |
| 1000005 | 2013-08-19 |
| 1000006 | 2013-08-19 |
| 1000007 | 2013-08-19 |
| 1000008 | 2013-08-19 |
| 1000009 | 2013-08-19 |
| 1000010 | 2013-08-19 |
| 1000011 | 2013-08-19 |
| 1000012 | 2013-08-19 |
+---------+------------+
13 rows in set (0.00 sec)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM