#mysql #sql #phpmyadmin
#mysql #sql #phpmyadmin
Вопрос:
У меня есть таблица, подобная этой:
id id2
1 435
2 345
3 345
4 567
5 456
6 987
7 987
Здесь в id2
345
и 987
повторяются дважды, поэтому я хочу удалить обе строки. Моя новая таблица должна выглядеть следующим образом:
id id2
1 435
4 567
5 456
Ответ №1:
Вы можете удалить их из select
просто используя агрегацию:
select min(id), id2
from t
group by id2
having count(*) = 1;
Если вы хотите удалить их из таблицы, используйте join
и group by
:
delete t
from t join
(select id2, count(*) as cnt
from t
group by id2
) tt
on t.id2 = tt.id2
where cnt > 1;
Ответ №2:
Вы можете использовать not exists
:
select *
from table t
where not exists (select 1 from table t1 where t1.id2 = t.id2 and t1.id <> t.id);
То же самое вы можете удалить записи :
delete t
from table t
where exists (select 1 from table t1 where t1.id2 = t.id2 and t1.id <> t.id);