[SQL] 어떻게 오라클의 테이블에서 중복 값을 찾을 수 있습니까?
SQL어떻게 오라클의 테이블에서 중복 값을 찾을 수 있습니까?
주어진 열 및 Oracle 데이터베이스 테이블에서의 발생의 수에 대한 중복 값을 반환합니다 간단한 SQL 문은 무엇입니까?
예를 들면 : 나는 열 JOB_NUMBER와 JOBS 테이블이있다. 어떻게 중복 JOB_NUMBERs이있는 경우 내가 찾을 수 있습니다, 그리고 그들은 얼마나 많은 시간을 중복거야?
해결법
-
==============================
1.
SELECT column_name, COUNT(column_name) FROM table_name GROUP BY column_name HAVING COUNT(column_name) > 1;
-
==============================
2.또 다른 방법:
또 다른 방법:
SELECT * FROM TABLE A WHERE EXISTS ( SELECT 1 FROM TABLE WHERE COLUMN_NAME = A.COLUMN_NAME AND ROWID < A.ROWID )
작품 벌금 (빠른 충분) 때 COLUMN_NAME 인덱스가있다. 그리고 삭제하거나 중복 행을 업데이트하는 더 좋은 방법입니다.
-
==============================
3.내가 생각할 수있는 가장 간단한 :
내가 생각할 수있는 가장 간단한 :
select job_number, count(*) from jobs group by job_number having count(*) > 1;
-
==============================
4.당신은 당신이 중복의 실제 번호를 알 필요가없는 경우에도 반환 된 열의 수를 할 필요가 없습니다. 예를 들면
당신은 당신이 중복의 실제 번호를 알 필요가없는 경우에도 반환 된 열의 수를 할 필요가 없습니다. 예를 들면
SELECT column_name FROM table GROUP BY column_name HAVING COUNT(*) > 1
-
==============================
5.방법에 대해 :
방법에 대해 :
SELECT <column>, count(*) FROM <table> GROUP BY <column> HAVING COUNT(*) > 1;
위의 예에 대답하기 위해서는 같을 것이다 :
SELECT job_number, count(*) FROM jobs GROUP BY job_number HAVING COUNT(*) > 1;
-
==============================
6.경우 여러 열은 다음이 사용할 수있는 고유 한 행 (예를 들어, 관계 표)를 식별 곳
경우 여러 열은 다음이 사용할 수있는 고유 한 행 (예를 들어, 관계 표)를 식별 곳
사용 행 ID 예를 들면 emp_dept (EMPID, deptid, STARTDATE, ENDDATE) EMPID 및 deptid있는 독특한 가정하고 그 경우에 행을 식별
select oed.empid, count(oed.empid) from emp_dept oed where exists ( select * from emp_dept ied where oed.rowid <> ied.rowid and ied.empid = oed.empid and ied.deptid = oed.deptid ) group by oed.empid having count(oed.empid) > 1 order by count(oed.empid);
같은 테이블에 기본 키가있는 경우 다음 ID가 다음 PK입니다 예컨대 대신 ROWID의 기본 키를 사용
select oed.empid, count(oed.empid) from emp_dept oed where exists ( select * from emp_dept ied where oed.id <> ied.id and ied.empid = oed.empid and ied.deptid = oed.deptid ) group by oed.empid having count(oed.empid) > 1 order by count(oed.empid);
-
==============================
7.하기
하기
select count(j1.job_number), j1.job_number, j1.id, j2.id from jobs j1 join jobs j2 on (j1.job_numer = j2.job_number) where j1.id != j2.id group by j1.job_number
당신에게 중복 된 행 'ID를 제공 할 것입니다.
-
==============================
8.
SELECT SocialSecurity_Number, Count(*) no_of_rows FROM SocialSecurity GROUP BY SocialSecurity_Number HAVING Count(*) > 1 Order by Count(*) desc
-
==============================
9.나는 보통 오라클 분석 함수 ROW_NUMBER ()를 사용합니다.
나는 보통 오라클 분석 함수 ROW_NUMBER ()를 사용합니다.
당신이 고유 인덱스 또는 열을 기반으로 기본 키 (C1, C2, C3)에 관한 한 당신 중복을 확인하고 싶은 말은. 그럼 당신은 ROWID의 ROW_NUMBER ()로 가져온 라인의 수> 1 행의 양육이 길을 갈 것입니다 :
Select * From Table_With_Duplicates Where Rowid In (Select Rowid From (Select Rowid, ROW_NUMBER() Over ( Partition By c1 || c2 || c3 Order By c1 || c2 || c3 ) nbLines From Table_With_Duplicates) t2 Where nbLines > 1)
-
==============================
10.여기에 그렇게 할 수있는 SQL 요청은 다음과 같습니다
여기에 그렇게 할 수있는 SQL 요청은 다음과 같습니다
select column_name, count(1) from table group by column_name having count (column_name) > 1;
-
==============================
11.나는 그것의 오래된 스레드를 알고 있지만이 어떤 일을하는 데 도움이 될 수 있습니다.
나는 그것의 오래된 스레드를 알고 있지만이 어떤 일을하는 데 도움이 될 수 있습니다.
아래 중복 사용을 확인하는 동안 테이블의 다른 열을 인쇄해야하는 경우 :
select * from table where column_name in (select ing.column_name from table ing group by ing.column_name having count(*) > 1) order by column_name desc;
필요한 경우 또한 WHERE 절에 몇 가지 추가 필터를 추가 할 수 있습니다.
-
==============================
12.1. 솔루션
1. 솔루션
select * from emp where rowid not in (select max(rowid) from emp group by empno);
-
==============================
13.또한 u는 테이블 말의 reqitem의 모든 중복 값을 나열이 뭔가를 시도 할 수 있습니다
또한 u는 테이블 말의 reqitem의 모든 중복 값을 나열이 뭔가를 시도 할 수 있습니다
SELECT count(poid) FROM poitem WHERE poid = 50 AND rownum < any (SELECT count(*) FROM poitem WHERE poid = 50) GROUP BY poid MINUS SELECT count(poid) FROM poitem WHERE poid in (50) GROUP BY poid HAVING count(poid) > 1;
from https://stackoverflow.com/questions/59232/how-do-i-find-duplicate-values-in-a-table-in-oracle by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 데이터베이스에 걸쳐 문자 세트 (및 정렬을) 변경하려면? (0) | 2020.03.29 |
---|---|
[SQL] 무엇 MySQL의 데이터베이스 테이블 및 관계 조건 질문과 Q & A 설문 조사를 지원하는 것? [닫은] (0) | 2020.03.29 |
[SQL] OR은 SQL Server의 CASE 문이 지원되지 않습니다 (0) | 2020.03.29 |
[SQL] 읽기 커밋과 반복 읽기의 차이 (0) | 2020.03.29 |
[SQL] 오라클 SQL - 열의 최대 5 개 값을 검색하는 방법 (0) | 2020.03.29 |