2016-10-26 2 views
0

에 나머지 행을 삭제하고 나머지 행을 예를 들어중복 열 값을 유지하고 내가 중복 행을 유지하려면 SQL

을 삭제

Emp_no Leave_cd 
-----------------  
1234  AL 
1234  AL 
1234  AL 
1234  BT 
2345  AL 
2345  AL 
2345  AL 
2345  AL 
2345  EL 

나는에 따라 비 중복 행을 삭제하려면 leave_cdemp_no.

이 코드를 시도했지만 코드는 테이블

Delete from table 
where LEAVE_CD IN (Select leave_cd as d 
        from table 
        group by EMP_NO, LEAVE_CD 
        having Count(table.leave_cd) = 1) 
+0

코드가 잘 보이고 작동합니다. "<= 1" – KyLim

+0

@KyLim <= 1 여전히 모든 행을 삭제합니다. – FullStack

답변

1
DELETE Table 
    --SELECT t1.* -- uncomment this line for a preview 
    FROM Table t1 
    INNER JOIN (SELECT g2.Emp_no, g2.Leave_cd 
       FROM Table g2 
       GROUP BY g2.Emp_no, g2.Leave_cd 
       HAVING COUNT(g2.Emp_no) = 1) z3 ON z3.Emp_no = t1.Emp_no 
                AND z3.LEave_cd = t1.Leave_cd 

나는 당신이 당신에게 의미가있는 특정 사용 케이스를 확신의 모든 행을 삭제합니다. 그러나, 나는 하위 쿼리를 기반으로 코드를 삭제하지 않습니다. 일반적인 관행과 마찬가지로 사소한 것입니다.

+0

감사합니다. – FullStack

관련 문제