programing

서브쿼리가 NULL인지 확인합니다.

randomtip 2022. 12. 21. 22:56
반응형

서브쿼리가 NULL인지 확인합니다.

질문이 있습니다.

SELECT sid FROM (SELECT * FROM myTable WHERE keyword='tank') AS InnerTmp LIMIT 1

내부 쿼리가 NULL일 수 있습니다. NULL을 0으로 바꾸고 싶습니다.시도했지만 작동하지 않습니다.

SELECT sid FROM (SELECT IFNULL(sid,0) AS sid FROM myTable WHERE keyword='tank') AS InnerTmp LIMIT 1

키워드='tank'에 행이 없는 경우 서브쿼리가 0 행을 반환한다는 의미입니까?

이 문제를 해결하는 방법은 다음과 같습니다. 외부 조인(Outer join)을 사용하여 적어도 하나의 행을 얻은 후 키워드='tank'인 행 집합과 일치시킵니다.이러한 행이 없는 경우에도 외부 조인 반대쪽에서 한 행을 반환합니다.그런 다음 COALESCE()를 사용하여 sid를 더미 제로 값으로 기본 설정할 수 있습니다.

SELECT sid FROM (
  SELECT COALESCE(myTable.sid, t.placeholder) AS sid
  FROM (SELECT 0 AS placeholder) AS t 
  LEFT OUTER JOIN myTable ON keyword='tank'
) AS InnerTmp LIMIT 1

문제는 당신이 단지 테스트하고 있다는 것입니다.sidNULL그리고 만약 그렇다면 너는SELECT 0그렇지 않으면 0도 선택합니다.왜냐하면 만약에IFNULL조건이 충족되지 않아 0을 반환합니다().FALSE).

를 사용해야 합니다.IF절과 확인ISNULL(sid)1 입니다 (TRUE이 경우SELECT 0또 다른SELECT sid.

SELECT sid FROM (
    SELECT IF(ISNULL(sid), 0, sid) FROM myTable WHERE keyword='tank') AS InnerTmp
    LIMIT 1

언급URL : https://stackoverflow.com/questions/22999953/check-if-subquery-is-null

반응형