У меня есть такая таблица
CREATE TABLE table1 (
`ID` VARCHAR(100),
`Val` VARCHAR(100),
`Val2` VARCHAR(100)
);
INSERT INTO table1
(`ID`, `Val`, `Val2`)
VALUES
('1','4788','90'),
('2','4788','90'),
('10','4788','10'),
('20','111','10'),
('30','111','10'),
('57','89','89111'),
('59','89','89111'),
('60','89','10'),
('2','900','7000'),
('4','900','7001');
У меня есть два условия для этой таблицы:
- Столбец Val должен иметь повторяющееся значение И,
- Столбец Val2 должен дублироваться
, поэтому моя цель - вернуть данные, если выполняются два условия. Если столбец val имел повторяющееся значение, а столбец val2 имел повторяющееся значение и каждый столбец в своей собственной строке.
мой запрос выглядит так
select t1.* from table1 t1
where exists (select 1 from table1 where id <> t1.id and val = t1.val)
and exists (
select 1 from table1
where val = t1.val and val2 in (select val2 from table1 group by val2 having count(*) > 1)
)
результат был таким
ID Val Val2
1 4788 90
2 4788 90
10 4788 10
20 111 10
30 111 10
57 89 89111
59 89 89111
60 89 10
Как видите, столбцы не совпадают друг с другом
Я ожидаю, что данные результата были такими
ID Val Val2
1 4788 90
2 4788 90
20 111 10
30 111 10
57 89 89111
59 89 89111
вот моя скрипка