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
'programing' 카테고리의 다른 글
If a global variable is initialized to 0, will it go to BSS? (0) | 2023.09.27 |
---|---|
일부 다른 값을 기반으로 하는 Mysql RAND() 함수 (0) | 2023.09.27 |
Pandas 데이터 프레임에 문자열이 있는지 확인합니다. (0) | 2023.09.17 |
XML 명령줄 처리를 위한 Grep and Sed equivalent (0) | 2023.09.17 |
n개 이상의 기준 중 n-1개 이상이 일치한 모든 레코드 (0) | 2023.09.17 |