这个问题非常简单我出于某种原因无法获得正确的结果来显示重复的记录
Table : Paypal_ipn_orders
id payer_email
1 susan@gmail.com
2 ryan@gmail.com
3 susan@gmail.com
4 steve@gmail.com
5 steve@gmail.com
SELECT id, COUNT( payer_email ) `tot`
FROM paypal_ipn_orders
GROUP BY payer_email
HAVING `tot` >1
Run Code Online (Sandbox Code Playgroud)
样本输出
id tot
1 2
4 2
Run Code Online (Sandbox Code Playgroud)
预期产出
id payer_email
1 susan@gmail.com
3 susan@gmail.com
4 steve@gmail.com
5 steve@gmail.com
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
lc.*_*lc. 60
SELECT id, payer_email
FROM paypal_ipn_orders
WHERE payer_email IN (
SELECT payer_email
FROM paypal_ipn_orders
GROUP BY payer_email
HAVING COUNT(id) > 1
)
Run Code Online (Sandbox Code Playgroud)
Tim*_*nen 13
将IN在我的处境太慢(180秒)
所以我用了一个JOIN(0.3秒)
SELECT i.id, i.payer_email
FROM paypal_ipn_orders i
INNER JOIN (
SELECT payer_email
FROM paypal_ipn_orders
GROUP BY payer_email
HAVING COUNT( id ) > 1
) j ON i.payer_email=j.payer_email
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子:
select <duplicate_column_name> from <table_name> group by <duplicate_column_name> having count(*)>=2
Run Code Online (Sandbox Code Playgroud)
它肯定会起作用。:)
| 归档时间: |
|
| 查看次数: |
97399 次 |
| 最近记录: |