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
SELECT * FROM `table` t1 join `table` t2 WHERE (t1.name=t2.name) && (t1.id!=t2.id)
SELECT id, payer_email FROM paypal_ipn_orders
WHERE payer_email IN (
SELECT payer_email FROM papypal_ipn_orders GROUP BY payer_email HAVING COUNT(*) > 1)
use this code
SELECT *
FROM paypal_ipn_orders
GROUP BY payer_email
HAVING COUNT( payer_email) >1
Similar to this answer, though I used a temporary table instead:
CREATE TEMPORARY TABLE duplicates (
SELECT payer_email
FROM paypal_ipn_orders
GROUP BY payer_email
HAVING COUNT(id) > 1
);
SELECT id, payer_email
FROM paypal_ipn_orders AS p
INNER JOIN duplicates AS d ON d.payer_email=p.payer_email;
This works the fastest for me
SELECT
primary_key
FROM
table_name
WHERE
primary_key NOT IN (
SELECT
primary_key
FROM
table_name
GROUP BY
column_name
HAVING
COUNT(*) = 1
);
Hi above answer will not work if I want to select one or more column value which is not same or may be same for both row data
For Ex. I want to select username, birth date also. But in database is username is not duplicate but birth date will be duplicate then this solution will not work.
For this use this solution Need to take self join on same table/
SELECT
distinct(p1.id), p1.payer_email , p1.username, p1.birth_date
FROM
paypal_ipn_orders AS p1
INNER JOIN paypal_ipn_orders AS p2
ON p1.payer_email=p2.payer_email
WHERE
p1.birth_date=p2.birth_date
Above query will return all records having same email_id and same birth date