반응형
이것이 내가하려는 것입니다
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
반응형
'MySql' 카테고리의 다른 글
MySQL ajax 또는 PHP를 사용하여 매초마다 MySQL 쿼리를 새로 고치는 방법은 무엇입니까? (0) | 2020.12.04 |
---|---|
MySQL PHP로 유니 코드 데이터를 표시하는 방법 (0) | 2020.12.04 |
MySQL PHP로 만든 SQL 쿼리에서 값을 얻는 방법은 무엇입니까? (0) | 2020.12.04 |
MySQL JPA 내의 PreparedStatement 대안? (0) | 2020.12.04 |
MySQL mysql의 날짜 필드와 일과 월만 비교 (0) | 2020.12.04 |
댓글