我有一個mySQL表,其中包含基於付款的行。mySQL查詢返回具有重複字段的結果?
每一行都包含他們的電子郵件地址,所以我想用mySQL和PHP編寫一個查詢來找出有多少人在此表中有兩個或多個條目。
這基本上是知道他們是否通過購買兩個套餐或續訂訂閱而多次支付我們。
這樣做的最好方法是什麼?
我有一個mySQL表,其中包含基於付款的行。mySQL查詢返回具有重複字段的結果?
每一行都包含他們的電子郵件地址,所以我想用mySQL和PHP編寫一個查詢來找出有多少人在此表中有兩個或多個條目。
這基本上是知道他們是否通過購買兩個套餐或續訂訂閱而多次支付我們。
這樣做的最好方法是什麼?
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會允許什麼。
您不需要DISTINCT子句。 – Furgas 2012-02-03 11:11:22
是的,你非常正確,我在測試中沒有這樣做,但由於某種原因,當我將它輸入到我的答案中時,我把它放入了! – 2012-02-03 11:21:39
SELECT email, COUNT(email) as c_email FROM emails_table WHERE c_email > 1;
您將無法在'WHERE'子句中使用'c_email',因爲它只接受列名稱。要過濾聚合或列別名,您將需要使用'HAVING c_email> 1' – 2012-02-03 10:09:13
這也缺少聚合子句 - GROUP BY – 2012-02-03 10:13:47
你試過了什麼?代碼請 – Rikesh 2012-02-03 09:43:15
'select unique_id,count_(*)from table_name group by unique_id;' – 2012-02-03 10:22:27