메일 링리스트가 있고 중복 된 항목이 많습니다. 내가 그들을 제거 할 수 있도록 중복을 찾으려고 노력하고있어. 아래의 전체 쿼리를 실행할 때 테이블의 모든 항목을 가져옵니다 (142,000 +). 하위 쿼리를 실행할 때 나는 5768 행만 얻습니다. 어떤 중복 행을 삭제할지 결정하려면 각 중복 행의 모든 열이 필요합니다. 전체 쿼리가 모든 행을 반환하도록 만드는 것은 무엇을 잘못하고 있습니까?SQL exists 모든 행을 반환합니다.
select * from Mailinglist
where exists
(select count(*), mailaddress, CenterName
from Mailinglist
group by MailAddress, CenterName
having count(*)>1)
내부 쿼리를 실행하지 않는 이유는 무엇입니까? 'Having' 조항이있는 것은 무엇입니까? – codingbiz
@codingbiz 하위 쿼리는 삭제 후 하나 이상의 데이터가 필요하므로 하나만 제외하고 중복 된 결과가 삭제됩니다. '오프셋 2 다음에 100 행 가져 오기'를 사용할 수 있습니다. –
하위 쿼리는 외부 쿼리와 관련이 없습니다. 왜 외부 쿼리에서 모든 행을 반환합니다. –