Select and display only duplicate records in mysql

后端 未结 12 2083
南旧
南旧 2020-12-08 06:56

This question is pretty simple I for some reason cant get the proper result to display only the duplicate records

Table   : Paypal_ipn_orders
id                      


        
相关标签:
12条回答
  • 2020-12-08 07:33

    Try this query:

    SELECT id, COUNT( payer_email ) `tot`
    FROM paypal_ipn_orders
    GROUP BY id
    HAVING `tot` >1
    

    Does it help?

    0 讨论(0)
  • 2020-12-08 07:34

    I think this way is the simplier. The output displays the id and the payer's email where the payer's email is in more than one record at this table. The results are sorted by id.

        SELECT id, payer_email
        FROM paypal_ipn_orders
        WHERE COUNT( payer_email )>1
        SORT BY id;
    
    0 讨论(0)
  • 2020-12-08 07:40

    The IN was too slow in my situation (180 secs)

    So I used a JOIN instead (0.3 secs)

    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
    
    0 讨论(0)
  • 2020-12-08 07:41
    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
    )
    

    sqlfiddle

    0 讨论(0)
  • 2020-12-08 07:42

    here is the simple example :

    select <duplicate_column_name> from <table_name> group by <duplicate_column_name> having count(*)>=2
    

    It will definitly work. :)

    0 讨论(0)
  • 2020-12-08 07:42

    Get a list of all duplicate rows from table:

    Select * from TABLE1 where PRIMARY_KEY_COLUMN NOT IN ( SELECT PRIMARY_KEY_COLUMN
    FROM TABLE1 
    GROUP BY DUP_COLUMN_NAME having (count(*) >= 1))
    
    0 讨论(0)
提交回复
热议问题