반응형
서브쿼리가 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
문제는 당신이 단지 테스트하고 있다는 것입니다.sid
이NULL
그리고 만약 그렇다면 너는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
반응형
'programing' 카테고리의 다른 글
maven-shade-plugin의 용도와 Java 패키지를 재배치하는 이유는 무엇입니까? (0) | 2022.12.21 |
---|---|
SQL에서 지정된 양을 초과하는 첫 번째 행을 가져오는 방법 (0) | 2022.12.21 |
MySQL에 있는 경우 업데이트하고 없는 경우 삽입(AKA "upsert" 또는 "Merge")하려면 어떻게 해야 합니까? (0) | 2022.12.21 |
워드프레스를 위한 MariaDB 최적화 (0) | 2022.12.21 |
const int*, const int * const 및 int const *의 차이점은 무엇입니까? (0) | 2022.12.21 |