2010-08-04 54 views
0
select * from hari; 
+------+------------+-------+ 
| id | mydate  | email | 
+------+------------+-------+ 
| 1 | 2009-10-10 | 1111 | 
| 1 | 2009-10-10 | 1111 | 
| 1 | 2009-10-10 | 2222 | 
| 2 | 2010-11-11 | 3333 | 
| 2 | 2010-11-11 | 3333 | 
+------+------------+-------+ 
5 rows in set (0.01 sec) 

通过id,mydate和电子邮件进行分组后,将只有2条记录mathcing id = 1 如何执行此操作?自加入唯一行吗?

有人给了我下面的查询,其中第一个ID的计数是2(正确) 但我觉得这个查询很混乱,并且猜测必须有一些更好的方法。

mysql>SELECT 
count(sel2.refid2) as recCount, 
refid2, recDate2 
FROM 
(SELECT id AS refid2, mydate AS recDate2 
FROM hari AS ol_Email1 
GROUP BY ol_Email1.id, ol_Email1.mydate, ol_Email1.email 
) AS sel2 
GROUP BY sel2.refid2 
+----------+--------+------------+ 
| recCount | refid2 | recDate2 | 
+----------+--------+------------+ 
|  2 |  1 | 2009-10-10 | 
|  1 |  2 | 2010-11-11 | 
+----------+--------+------------+ 
2 rows in set (0.28 sec) 

CREATE TABLE `hari` (
    `id` int(11) default NULL, 
    `mydate` date default NULL, 
    `email` varchar(100) default NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
INSERT INTO `hari` VALUES (1,'2009-10-10','1111'),(1,'2009-10-10','1111'),(1,'2009-10-10','2222'),(2,'2010-11-11','3333'),(2,'2010-11-11','3333'); 

回答

1
SELECT * FROM hari WHERE id = 1 GROUP BY email 
+0

我需要的数2的输出 – shantanuo 2010-08-04 11:06:24

+0

SELECT COUNT(*),id,mydate,email FROM hari WHERE id = 1 GROU P BY电子邮件 – 2010-08-04 11:19:42

1

喜欢的东西...

SELECT *, 
     COUNT(*) 
    FROM hari 
    GROUP BY id, mydate, email; 

(我不太清楚你想要的列组通过)