반응형
IF EXISTS 하위 쿼리와 함께 SQL Select 문을 사용하는 방법은 무엇입니까?
IF EXISTS 문(SQL Server)을 사용하여 하위 쿼리에서 부울 값을 선택하는 방법은 무엇입니까?
다음과 같은 것이어야 합니다.
SELECT
TABLE1.Id,
NewFiled = (IF EXISTS(SELECT Id FROM TABLE2 WHERE TABLE2.ID = TABLE1.ID)
SELECT 'TRUE'
ELSE
SELECT 'FALSE')
FROM TABLE1
사용하다CASE:
SELECT
TABLE1.Id,
CASE WHEN EXISTS (SELECT Id FROM TABLE2 WHERE TABLE2.ID = TABLE1.ID)
THEN 'TRUE'
ELSE 'FALSE'
END AS NewFiled
FROM TABLE1
한다면TABLE2.ID는 고유 또는 기본 키이며 다음을 사용할 수도 있습니다.
SELECT
TABLE1.Id,
CASE WHEN TABLE2.ID IS NOT NULL
THEN 'TRUE'
ELSE 'FALSE'
END AS NewFiled
FROM TABLE1
LEFT JOIN Table2
ON TABLE2.ID = TABLE1.ID
ISNULL 및 Select 문을 사용하여 이 결과를 얻을 수도 있습니다.
SELECT
Table1.ID,
ISNULL((SELECT 'TRUE' FROM TABLE2 WHERE TABLE2.ID = TABEL1.ID),'FALSE') AS columName,
etc
FROM TABLE1
SELECT Id, 'TRUE' AS NewFiled FROM TABEL1
INTERSECT
SELECT Id, 'TRUE' AS NewFiled FROM TABEL2
UNION
SELECT Id, 'FALSE' AS NewFiled FROM TABEL1
EXCEPT
SELECT Id, 'FALSE' AS NewFiled FROM TABEL2;
사용CASE설명하고 다음과 같이 수행합니다.
SELECT
T1.Id [Id]
,CASE WHEN T2.Id IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END [Has Foreign Key in T2]
FROM
TABLE1 [T1]
LEFT OUTER JOIN
TABLE2 [T2]
ON
T2.Id = T1.Id
EXISTES를 사용하여 열 값이 다른 테이블에 있는지 확인할 수 있습니다.
SELECT
TABLE1.id,
EXISTS (SELECT 1 FROM TABLE2 WHERE TABLE2.id = TABLE1.id) AS columnName
FROM TABLE1
예:
CREATE TABLE TABLE1 (
id INTEGER PRIMARY KEY,
some_column TEXT NOT NULL
);
CREATE TABLE TABLE2 (
id INTEGER PRIMARY KEY,
some_column TEXT NOT NULL
);
INSERT INTO TABLE1 VALUES
(111, 'lorem ipsum'),
(222, 'and'),
(333, 'some'),
(444, 'random'),
(123, 'strings');
INSERT INTO TABLE2 VALUES
(111, 'lorem ipsum'),
(444, 'random'),
(123, 'strings');
SELECT
TABLE1.id,
EXISTS (SELECT 1 FROM TABLE2 WHERE TABLE2.id = TABLE1.id) AS columnName
FROM TABLE1
출력:
| 이드 | 일부 열 |
|---|---|
| 111 | 1 |
| 123 | 1 |
| 222 | 0 |
| 333 | 0 |
| 444 | 1 |
언급URL : https://stackoverflow.com/questions/7805019/how-to-use-sql-select-statement-with-if-exists-sub-query
반응형
'codememo' 카테고리의 다른 글
| 줄 끝 변환이 깃 코어에서 작동하는 방식입니다.서로 다른 운영 체제 간의 자동 제어 (0) | 2023.05.28 |
|---|---|
| 내용을 기준으로 문자열 목록 필터링 (0) | 2023.05.28 |
| Node.js를 사용하여 디렉터리가 없는 경우 디렉터리를 만드는 방법 (0) | 2023.05.28 |
| 6자리 정규식 (0) | 2023.05.28 |
| "템플릿은 필드 액세스, 속성 액세스, 단일 차원 배열 인덱스 또는 단일 매개 변수 사용자 지정 인덱서 식에만 사용할 수 있습니다." 오류 (0) | 2023.05.28 |