중복 여부에 관계없이 SELECT 문에서 값을 반환해야합니다.
예:
SELECT * FROM PEOPLE_TABLE
WHERE PERSON_ID = 1
AND PERSON_ID = 1;
분명히 단일 레코드를 반환합니다.
(person_id, name)
"1", "Henry"
결과를 반환하고 싶습니다.
"1", "Henry"
"1", "Henry"
이를 달성하는 가장 좋은 방법은 무엇입니까? 내 실제는 몇 개의 테이블을 조인하고 WHERE IN을 사용한 다음 약 600 개의 값 (200 개의 고유 값)을 지정합니다.
을 사용 WHERE IN
하면 중복이 억제됩니다. 다음과 같이하는 경우 :
CREATE TABLE PEOPLE_TABLE (PERSON_ID NUMBER, NAME VARCHAR2(10));
INSERT INTO PEOPLE_TABLE VALUES (1, 'Henry');
INSERT INTO PEOPLE_TABLE VALUES (2, 'George');
INSERT INTO PEOPLE_TABLE VALUES (3, 'Jane');
SELECT PERSON_ID, NAME
FROM PEOPLE_TABLE
WHERE PERSON_ID IN (1, 1, 3);
PERSON_ID NAME
---------- ----------
1 Henry
3 Jane
그런 다음 동일한 대상 값을 포함하는 테이블 컬렉션에 대해 대신 조인 할 수 있습니다.
SELECT PT.PERSON_ID, PT.NAME
FROM TABLE(SYS.ODCINUMBERLIST(1, 1, 3)) T
JOIN PEOPLE_TABLE PT
ON PT.PERSON_ID = T.COLUMN_VALUE;
PERSON_ID NAME
---------- ----------
1 Henry
1 Henry
3 Jane
SQL Fiddle 데모 . (또는 주석에서 문자열 사용 ).
원하는 경우 고유 한 스키마 수준 테이블 컬렉션 유형을 생성하고이를 수행 할 수있는 권한이 있거나 실제 데이터 유형에 따라 또는 과 같은 기본SYS.OCDINUMBERLIST
SYS.ODCIVARCHAR2LIST
제공 유형을 사용할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다