programing

MYSQL Left Join NULL 값을 선택하려면 어떻게 해야 합니까?

newsource 2023. 9. 17. 13:17

MYSQL Left Join NULL 값을 선택하려면 어떻게 해야 합니까?

MySQL의 테이블 조인에 대한 마지막 질문에 대한 후속 질문입니다.

나는 왼쪽 조인 테이블에서 NULL 값을 선택할 수 있어야 합니다.

여기 제가 합류합니다.

table1.id | table1.name | table2.id | table2.surname
        1 |        John |         1 |            Doe
        2 |     Michael |         2 |       Anderson
        3 |        Anna |      NULL |           NULL
        4 |         Sue |      NULL |           NULL

하고 싶습니다.select WHERE table2.surname = NULL, 하지만 이런 쿼리는 작동하지 않습니다.

SELECT table1.*,table2.*
FROM table1
LEFT JOIN table2
    ON table1.id=table2.id
WHERE table2.surname=NULL

어떤 결과도 주지 않는 논리는 어느 정도 이해할 수 있지만, 그 결과를 얻을 수 있는 방법이 있을 것입니다.

도움을 주시면 감사하겠습니다.

비교하자면NULL당신이 사용해야 하는 값들.IS NULL술어: 다음과 같습니다.

SELECT table1.*, table2.*
FROM table1
LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.surname IS NULL

사용해야 합니다.IS NULL대신에= NULL:

WHERE table2.surname IS NULL

당신이 단순히 할 수 없는 이유는= NULL이유는NULL본질적으로 "반전"이며 어떤 것과도 동일하거나 동일하지 않을 수 없기 때문에, 정확히 일치해야 하는 것처럼 그것을 무언가와 비교하려고 하면 단순히 되돌아오는 것입니다.NULL예상된 부울 대신에0아니면1, 그게 바로 당신의 쿼리가 빈 결과를 반환하는 이유입니다.

"모름" "모름" 사이에는 분명한 차이가 있습니다.여러분은 분명 모르는 것이나 모르는 이 없는 것을 테스트할 수 있지만, 모르는 것이 알려지지 않았기 때문에 모르는 것이 "동일한" 것인지 테스트할 수 없고, 그것은 말이 되지 않습니다.

또한 MySQL을 사용하고 있으므로 다른 옵션은 다음을 사용하는 것입니다.table2.surname <=> NULL,어디에<=>는 MySQL 고유의 NULL-Safe 비교 연산자이지만, 그것을 사용하지 않고 표준 SQL 방식을 고수하도록 노력합니다 (IS NULL/IS NOT NULL)

다음을 사용하여 시도:

SELECT table1.*,table2.* 
FROM table1 
  LEFT JOIN table2 ON table1.id=table2.id 
WHERE table2.surname IS NULL

MySQL 사양에 따라 사용해야 함 ""= NULL"이 아닌 "IS NULL"입니다."(NULL = NULL)은 NULL과 같다"고 되어 있습니다.그러나 NULL은 Boolean으로 사용되는 동안 False와 같습니다.

언급URL : https://stackoverflow.com/questions/11500150/mysql-left-join-how-do-i-select-null-values