ProgramingTip

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

bestdevel 2020. 11. 14. 10:54
반응형

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


IF EXISTS 문 (SQL Server)을 사용하여 하위 쿼리에서 부울 값을 선택하는 방법은 무엇입니까?

다음과 소비 야합니다.

SELECT 
  TABEL1.Id, 
  NewFiled = (IF EXISTS(SELECT Id FROM TABLE2 WHERE TABLE2.ID = TABEL1.ID) 
                 SELECT 'TRUE' 
              ELSE 
                 SELECT 'FALSE') 
FROM TABEL1

사용 CASE:

SELECT 
  TABEL1.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 
  TABEL1.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
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

참고 URL : https://stackoverflow.com/questions/7805019/how-to-use-sql-select-statement-with-if-exists-sub-query

반응형