programing

하위 쿼리 결과에서 ID 삭제

closeapi 2023. 11. 2. 21:45
반응형

하위 쿼리 결과에서 ID 삭제

내가 이걸 가지고 있다고 치자.users표:

id email
1  test@gmail.com
2  xxp@gmail.com
3  test@gmail.com
4  zzz@gmail.com

그리고 중복된 행을 삭제하고 싶습니다.emails.

먼저 중복된 이메일을 검색해 보려고 했습니다.

select id
group by email
having count(*)>1

결과는 다음과 같습니다.

갱신된 결과

1

그 다음에 추가했습니다.delete조항:

delete from users
where id in(
    select id
    group by email
    having count(*)>1 )

결과는 No Errors(오류 없음)이지만 영향을 받는 행은 0개...아무 일도 없었단 뜻이죠

저는 제가 무엇을 잘못하고 있는지 그리고 이것을 하는 다른 방법들을 알고 싶습니다.

사양:Mac에서 Sequel Pro를 사용하는 MySQL 5.5.5-10.1.16-MariaDB

감사해요.

하위 쿼리를 수행하여 중복된 ID 또는 ID를 가져온 후 테이블에서 제거할 수 있습니다.데모 참조: http://sqlfiddle.com/ #!9/f14d05/1

DELETE from users 
where id in (
     SELECT id 
     from (
           SELECT a.id, count(*) as rn 
             FROM users a
            JOIN users b ON a.email = b.email AND a.id <= b.id
           GROUP BY a.id, a.email
          )  t
      where rn>1
      );

MSSQL에 대한 테스트.

select min(id) id, email 
into #users 
from [users]
group by email

delete from [users] where id not in (select id from #users)

drop table #users

언급URL : https://stackoverflow.com/questions/49781354/delete-ids-from-subquery-results

반응형