본문 바로가기
MySql

MySQL SQL 쿼리, 열이 null이 아닌 경우에만 선택하고 그렇지 않으면 선택하지 않음

by 베이스 공부 2020. 12. 4.
반응형

이것이 내가하려는 것입니다

 SELECT `a`, `b`, `c` FROM `tbl` WHERE `a` IS NOT NULL OR `b` IS NOT NULL OR `c` IS NOT NULL WHERE id = ?

a와 c가 null이고 b가 아닌 경우에도이 결과 집합을받습니다. \

 a      b     c 
____   ____   ____   

NULL  value   NULL

하지만 나는 이것이 이것을 반환하기를 원합니다.

   b
  ____

  value

미리 감사드립니다!

 

해결 방법

 

널이 아닌 두 개의 열이있을 때 두 개의 열이있는 행을 가져오고 하나만있는 경우 1 개를 얻으려면 쿼리를 동적으로 만들어야합니다.

각 행에 널이 아닌 값이 포함 된 열이 항상 1 개 있도록하려면 공용체로 수행 할 수 있습니다.

SELECT a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT c FROM tbl WHERE c IS NOT NULL AND id = ?

값이 어떤 열에서 오는지 알고 싶다면 다음과 같이 할 수 있습니다.

SELECT 'col a' AS ColName, a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT 'col b', b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT 'col c', c FROM tbl WHERE c IS NOT NULL AND id = ?

참고 : union은 중복 결과도 제거합니다. 중복을 유지하려면 UNION ALL 을 사용하십시오.

 

참조 페이지 https://stackoverflow.com/questions/24471704

 

 

반응형

댓글