Reputation: 59
lets say I have a validations table like below.
validation_id scenario_id 100 1 101 1 102 1 103 2 104 2 100 3 101 3 102 3
In the above table if we observe the scenario id's 1 and 3 have the same validation Id's 100, 101 and 102.
In this scenario I can say scenario_id=1 is a duplicate of scenario_id=3.
can I get a MySql query to find such duplicates.
Thanks in advance.
Upvotes: 0
Views: 52
Reputation: 33
SELECT validation_ids, GROUP_CONCAT(scenario_id SEPARATOR ', ') AS scenario_ids
FROM (
SELECT scenario_id, GROUP_CONCAT(validation_id ORDER BY validation_id SEPARATOR ', ') AS validation_ids
FROM (
SELECT * FROM (
SELECT 100 validation_id, 1 scenario_id
UNION SELECT 101 validation_id, 1 scenario_id
UNION SELECT 102 validation_id, 1 scenario_id
UNION SELECT 103 validation_id, 2 scenario_id
UNION SELECT 104 validation_id, 2 scenario_id
UNION SELECT 100 validation_id, 3 scenario_id
UNION SELECT 101 validation_id, 3 scenario_id
UNION SELECT 102 validation_id, 3 scenario_id) A
) B
GROUP BY scenario_id
) C
GROUP BY validation_ids
Upvotes: 0
Reputation: 1270873
You can use two levels of aggregation:
select validation_ids, group_concat(scenario_id)
from (select scenario_id,
group_concat(validation_id order by validation_id) as validation_ids
from validations v
group by scenario_id
) v
group by validation_ids
having count(*) >= 2;
Upvotes: 2