그래서 우리 서버에서 중복 SQL 스크립트를 실행했지만 최근까지는 깨닫지 못했습니다. 본질적으로 동일한 열 x (crn)를 가진 2 개의 항목이있는 많은 행이 있습니다.SQL 하나의 열에서 중복 된 WHERE 선택 x AND 열 y! = z
처음에는 같은 열 y (상태)로 입력되었습니다. 응용 프로그램에서 사용자가 열 y (상태)를 업데이트하도록했습니다. 그러나 이제는 'S'상태와 'S'이외의 상태를 가진 2 행 1 개가 있습니다. 내 목표 :
중복되는 CRN이 있고 STATUS가 S 인 테이블에서 모두 삭제 중복이 없으면 행을 삭제하고 싶지 않지만 존재하지 않으면 행만 삭제하려고합니다. 상태는 'S'입니다. 또한, 둘 다 S 상태 인 경우 두 레코드를 모두 삭제하지는 않겠지 만, 그렇게 할 경우 다음 다운로드에서 다시 과정을 수강 할 것이기 때문에 큰 문제는 아닙니다.
내가 원하는 행을 쿼리하기 위해 SELECT 문을 만들기 시작했으나 SELECT IF DUPLICATE EXISTS 부분 만 수행하는 방법을 모릅니다. 중복이 존재하는 경우 UNION 또는 LEFT JOIN 또는 레코드 만 얻으려는 것이 필요합니다.
SELECT * FROM
cas_usuECourses
WHERE
crn IN (SELECT crn FROM cas_usuECourses GROUP BY crn having count(1) > 1)
AND status = 'S'
AND termCode = 201320
편집 : 말할 수있는 방법은 위의 ... 거기에 있지만, 모두 DUPS는 'S'를 한 경우에만 그 중 하나를 삭제 하시겠습니까?
편집 : 나는 이것이 나에게 좋다고 본다. 이견있는 사람?
SELECT id FROM (
SELECT id, Row_Number() Over (Partition By crn ORDER BY id DESC) as ranking
FROM cas_usuECourses
WHERE status = 'S'
AND termCode = 201320
) as ranking
WHERE 순위로이있을 경우 =
난이 나에게 상태가 'S'는 모든 ID를 줄 것이라고 생각 하나, 그리고 'S'는이 날 만든 하나를 줄 것이다 둘째. 우리 termCode의 모든 엔트리가 중복되어 있다는 것을 알았습니다. 중복을 검사하는 것에 대해 걱정할 필요가 없습니다.
무엇을 검색 했습니까? 시도 했습니까? 무슨 RDMS? 가능한 중복 : [여기] (http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows), [여기] (http://stackoverflow.com/questions/18932/how- can-i-remove-duplicate-rows/679449) 및 [여기] (http://stackoverflow.com/questions/6471463/how-to-delete-duplicates-in-sql-table-based-on-multiple-fields/679449). – Kermit
글쎄, 나는 여기에 중복에 대한 정보를 찾고 있었지만, 내가 필요로하는 것과 같은 것을 보지 못한다. – Leeish
여기에 대한 정보는 올바른 경로로 안내합니다. – Kermit