표 B "USING"column_1과 조인 된 표 A가 있습니다. 나는 사용하여 시도, 쿼리 column_2의 값이NOT EQUAL 연산자를 사용할 때 NULL 처리
그래서 표 B에 column_2, column_3 또는 결합 된 행의 column_4의 값 중 하나를 동일하지 않습니다 표 A의 모든 행을 표시하려면 :
WHERE
A.column_2 <> B.column_2 AND
A.column_2 <> B.column_3 AND
A.column_2 <> B.column_4
이제 B.column_2, B.column_3 및 B.column_4의 모든 셀에 값이 있으면 쿼리 확인이 작동하고 A.column_2의 값이없는 표 A의 모든 행이 나열됩니다 표 B에서 일치합니다.
표 B의 셀 중 일부가 NULL 값을 갖는 경우 문제가 발생합니다. 그러면 결과가 반환되지 않습니다. 이것은 MySQL이 다음은 FALSE로 간주 때문인 것으로 보인다
23 <> NULL
을 ... 그리고 쿼리가 모든 검사가 TRUE를 반환 사례를 찾고 있기 때문에, 그것은 아무 것도 반환하지 않습니다.
다음은 IFNULL 값이 0 인 IFNULL로 둘러 쌓인 표 B 열을 배치하여 적용한 해결 방법입니다. 기본적으로 모든 NULL 셀이 0으로 변환되므로 NOT EQUAL 검사 일치가 없으면 표 A의 행이 표시 될 때 TRUE를 올바르게 리턴합니다. 코드는 다음과 같습니다.
WHERE
A.column_2 <> IFNULL(B.column_2, 0) AND
A.column_2 <> IFNULL(B.column_3, 0) AND
A.column_2 <> IFNULL(B.column_4, 0)
이 문제를 처리하는 방법은 대략적인 것처럼 보입니다. 이 문제를 해결할 더 좋은 방법이 있습니까?
)이 거의 COALESCE()와 같은, 그냥 1 값으로 제한됩니다. –
@Jordan IFNULL을 (사용할 수 있습니다 – Shadow