2012-02-03 60 views
2

我有一个mySQL表,其中包含基于付款的行。mySQL查询返回具有重复字段的结果?

每一行都包含他们的电子邮件地址,所以我想用mySQL和PHP编写一个查询来找出有多少人在此表中有两个或多个条目。

这基本上是知道他们是否通过购买两个套餐或续订订阅而多次支付我们。

这样做的最好方法是什么?

+1

你试过了什么?代码请 – Rikesh 2012-02-03 09:43:15

+0

'select unique_id,count_(*)from table_name group by unique_id;' – 2012-02-03 10:22:27

回答

2
select distinct email, count(*) as rowcount 
from datatable 
group by email 
having rowcount > 1 

编辑:我上面写了我的头顶部。在Oracle快速测试显示,语法是稍有不当,应该是

select distinct email, count(*) as rowcount 
from datatable 
group by email 
having count(*) > 1 

但这可能只是甲骨文不允许在having子句中的别名的列。我不确定mySQL会允许什么。

+0

您不需要DISTINCT子句。 – Furgas 2012-02-03 11:11:22

+0

是的,你非常正确,我在测试中没有这样做,但由于某种原因,当我将它输入到我的答案中时,我把它放入了! – 2012-02-03 11:21:39

0
SELECT email, COUNT(email) as c_email FROM emails_table WHERE c_email > 1; 
+0

您将无法在'WHERE'子句中使用'c_email',因为它只接受列名称。要过滤聚合或列别名,您将需要使用'HAVING c_email> 1' – 2012-02-03 10:09:13

+0

这也缺少聚合子句 - GROUP BY – 2012-02-03 10:13:47