codememo

IF EXISTS 하위 쿼리와 함께 SQL Select 문을 사용하는 방법은 무엇입니까?

tipmemo 2023. 5. 28. 20:48
반응형

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

반응형