[SQL] 쿼리 "동일하지가"일을하지 않습니다
SQL쿼리 "동일하지가"일을하지 않습니다
이 같은 매우 간단한 쿼리를 가지고 :
SELECT * FROM `all_conversations` WHERE `deleted_1` != '1';
그리고 내 deleted_1는 기본이 null 또는 일부 사용자 ID,하지만이 쿼리는 항상 나에게 0 행을 반환 어떤 이유로, 나는 또한 <시도>하지만 여전히 운이 무엇을 잘못 될 수 없었 수?
난 내 쿼리를 수정하고 지금은 잘 작동되도록 EDTI 그래서 더 querys를 실행 한 후 난 내 문제 deleted_1 필드의 디폴트 값은 것을 발견, 그것은 NULL했다 :
SELECT *
FROM `all_conversations`
WHERE `deleted_1` != 'NULL'
AND `deleted_1` != 23
해결법
-
==============================
1.
SELECT * FROM all_conversations WHERE deleted_1 <> 1 OR deleted_1 IS NULL
NULL 값은 특별한 치료가 필요 : http://dev.mysql.com/doc/refman/5.1/en/working-with-null.html
나는 찬성 다이아몬드 연산자 (<>)를 사용하는 게 좋을 것! = 첫 번째는 유효한 SQL이고, 두 번째는 MySQL의 추가 때문이다.
-
==============================
2.내가 사용 NULL 안전 연산자와 부정에 추천
내가 사용 NULL 안전 연산자와 부정에 추천
SELECT * FROM `all_conversations` WHERE NOT(`deleted_1` <=> '1');
-
==============================
3.당신이 시도 할 수 있습니다! deleted_1가 null 및 deleted_1 = '1'아닌가요?
당신이 시도 할 수 있습니다! deleted_1가 null 및 deleted_1 = '1'아닌가요?
mysql> select 0 is not null and 0 != '1', 1 is not null and 1 != '1', null is not null and null != '1'; +----------------------------+----------------------------+----------------------------------+ | 0 is not null and 0 != '1' | 1 is not null and 1 != '1' | null is not null and null != '1' | +----------------------------+----------------------------+----------------------------------+ | 1 | 0 | 0 | +----------------------------+----------------------------+----------------------------------+
또는이 deleted_1는 null 또는 deleted_1은 = '1'! :
mysql> select 0 is null or 0 != '1', 1 is null or 1 != '1', null is null or null != '1'; +-----------------------+-----------------------+-----------------------------+ | 0 is null or 0 != '1' | 1 is null or 1 != '1' | null is null or null != '1' | +-----------------------+-----------------------+-----------------------------+ | 1 | 0 | 1 | +-----------------------+-----------------------+-----------------------------+
정말 다시 얻을 싶어요에 따라 달라집니다.
-
==============================
4.이것 봐 ... 그것은 당신을 위해 희망 작동합니다
이것 봐 ... 그것은 당신을 위해 희망 작동합니다
SELECT * FROM `all_conversations` WHERE `deleted_1` IS NOT NULL AND `deleted_1` <> 23
-
==============================
5.당신은 NULL에 대한 테스트 등 =, <, 또는 <> 등의 산술 비교 연산자를 사용할 수 없습니다.
당신은 NULL에 대한 테스트 등 =, <, 또는 <> 등의 산술 비교 연산자를 사용할 수 없습니다.
너 자신을 위해이 방법을 설명하기 위해 다음과 같은 쿼리를 시도 :
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL; +----------+-----------+----------+----------+ | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL | +----------+-----------+----------+----------+ | NULL | NULL | NULL | NULL | +----------+-----------+----------+----------+
그래서 당신은 말을,
SELECT * FROM `all_conversations` WHERE `deleted_1` <> '1' and `deleted_1` is null;
your_field IS NULL NULL을 산술 연산자를 사용하여 값을 클럽 캔트 명시 적으로 있기 때문에 그것은 자신의 가치 BOOLEAN있다
-
==============================
6.나는 여러 AND 조건이있는 경우 만 추가 세부 사항을 추가, 위의 대답에 동의 쿼리를 아래와 같이, 당신은 당신이하지를 확인 열 또는의 첫 번째 부분에서 null로 동일을 놓아야 상태에서, 또는 부분은 당신의 상태가 잘못 만들기 때문에 어디
나는 여러 AND 조건이있는 경우 만 추가 세부 사항을 추가, 위의 대답에 동의 쿼리를 아래와 같이, 당신은 당신이하지를 확인 열 또는의 첫 번째 부분에서 null로 동일을 놓아야 상태에서, 또는 부분은 당신의 상태가 잘못 만들기 때문에 어디
SELECT ts.*, ct.Name AS CategoryName FROM MJ.Tasks AS ts LEFT JOIN MJ.Lookup_Category AS ct ON ts.CategoryID = ct.ID WHERE ts.Status!=1 OR ts.Status IS NULL AND ts.CategoryID = @CategoryID AND ts.UserID = @UserID AND CAST(ts.EndDate AS DATE) = CAST(@EndDate AS DATE)
-
==============================
7.어떻게 하나 주위에 따옴표를 제거하는 방법에 대한?
어떻게 하나 주위에 따옴표를 제거하는 방법에 대한?
SELECT * FROM `all_conversations` WHERE `deleted_1` != 1;
from https://stackoverflow.com/questions/8994408/query-not-equal-doesnt-work by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 SQL 날짜에 타임 스탬프로 변환 (0) | 2020.07.04 |
---|---|
[SQL] 나는 MySQL은 테이블 별칭을 만들려면 어떻게해야합니까 (0) | 2020.07.04 |
[SQL] 액세스 / SQL (쓰기 충돌)에서 편집 기록 문제 (0) | 2020.07.04 |
[SQL] 어떻게 MySQL의 날짜에서 연도와 월을 추출하고이를 비교합니까? (0) | 2020.07.04 |
[SQL] SQL은하지 쿼리와 동일한에 널 값을 표시하지? (0) | 2020.07.04 |