MySQL 의 WHERE 구문 에서 BETWEEN 과 IN 의 사용 튜 토리 얼
MySQL BETWEEN 문법
BETWEEN 연산 자 는 WHERE 표현 식 에서 두 값 사이 의 데이터 범 위 를 선택 하 는 데 사 용 됩 니 다.BETWEEN 은 AND 와 함께 사용 합 니 다.문법 은 다음 과 같 습 니 다.
WHERE column BETWEEN value1 AND value2
WHERE column NOT BETWEEN value1 AND value2
보통 value 1 은 value 2 보다 작 아야 합 니 다.BETWEEN 앞 에 NOT 연산 자 를 붙 였 을 때 BETWEEN 과 반대 되 는 뜻 으로 이 범위 밖의 값 을 선택 하 는 것 입 니 다.BETWEEN 실례
uid 가 2 에서 5 사이 의 사용자 데 이 터 를 선택 하 십시오:
SELECT * FROM user WHERE uid BETWEEN 2 AND 5
검색 결 과 를 다음 과 같이 되 돌려 줍 니 다.수치 형식 을 제외 하고 BETWEEN 도 문자열 범 위 를 지원 합 니 다.다음 과 같이 모든 username 이 a 에서 j 사이 에 있 는 사용 자 를 선택 하 십시오(단일 자모 k/K 포함).
SELECT * FROM user WHERE username BETWEEN 'a' AND 'k'
문자 범위 도 한 자 를 지원 하지만 일반적으로 의미 가 없다.
MySQL BETWEEN 경계
거의 모든 데이터 베 이 스 는 BETWEEN...AND 연산 자 를 지원 하지만 서로 다른 데이터 베 이 스 는 BETWEEN..AND 처리 방식 에 차이 가 있 습 니 다.MySQL 에서 BETWEEN 은 uid 가 2 에서 5 사이 에 있 는 사용자 데이터 예 를 선택 하 는 등 value 1 과 value 2 경계 값 을 포함 합 니 다.
일부 데이터 베 이 스 는 value 1 과 value 2 경계 값('and'와 유사)을 포함 하지 않 고,value 1 을 포함 하 며,value 2('=and'와 유사)를 포함 하지 않 는 데이터베이스 도 있다.그래서 BETWEEN...AND 를 사용 할 때 데이터베이스 가 BETWEEN 경계 값 을 어떻게 처리 하 는 지 확인 하 십시오.
MySQL BETWEEN 시간 날짜
BETWEEN AND 는 검색 시간 이나 날짜 대 에 자주 사용 되 는 내용 입 니 다.다음은 흔히 볼 수 있 는 BETWEEN 시간 날짜 예 입 니 다.
// int , 2008-08-08 20:00:00 2009-01-01
SELECT * FROM table WHERE column_time BETWEEN 1218196800 AND 1230739199
// DATE , 2008-08-08 2009-01-01
SELECT * FROM table WHERE column_time BETWEEN '2008-08-08' AND '2009-01-01'
// DATETIME , 2008-08-08 20:00:00 2009-01-01
SELECT * FROM table WHERE column_time BETWEEN '2008-08-08 20:00:00' AND '2008-12-31 23:59:59'
, >= :
// DATETIME , 2008-08-08 20:00:00
SELECT * FROM table WHERE column_time >= '2008-08-08 20:00:00'
이 를 통 해 알 수 있 듯 이 같은 수요,서로 다른 필드 유형,쓰기 방법 이 다 를 수 있 습 니 다.효율 적 으로 볼 때 int 시간 스탬프 의 형식 효율 이 가장 좋다.위의 BETWEEN 의 각 예 는 모두 SELECT 조회 이지 만 BETWEEN 은 UPDATE,DELETE 등 WHERE 표현 식 이 적용 되 는 SQL 에 도 사용 할 수 있 습 니 다.
MySQL BETWEEN 데이터 비교
BETWEEN 은 데이터 비교 기능 도 가지 고 있 습 니 다.문법 은 다음 과 같 습 니 다.
expr BETWEEN min AND max
expr 표현 식 의 값 이 min 보다 크 거나 같 거나 max 보다 작 거나 같 을 때 BETWEEN 의 반환 값 은 1 이 고 그렇지 않 으 면 0 으로 돌아 갑 니 다.이 기능 을 사용 하면 표현 식 이나 값 을 판단 할 수 있 습 니 다.그렇지 않 으 면 특정한 구간 에 있 습 니 다.
// 0
SELECT 1 BETWEEN 2 AND 3
// 1
SELECT 'b' BETWEEN 'a' AND 'c'
//
SELECT 20080808 BETWEEN 20080101 AND 20090101
BETWEEN 과<,<=,>=,>등 연산 자 는 어떤 경우 에 유사 한 기능 을 가지 지만 BETWEEN 연산 등급 이 더욱 높 고 효율 적 으로 한 수 높다.물론 BETWEEN 에 경계 값 문제 가 있어 유연성 이 부족 하기 때문에 상황 에 따라 어떤 연산 자 를 사용 하 는 지 구체 적 으로 대처 해 야 한다.MySQL IN 사용법
MySQL IN 문법
IN 연산 자 는 WHERE 표현 식 에 사 용 됩 니 다.목록 항목 형식 으로 여러 선택 을 지원 합 니 다.문법 은 다음 과 같 습 니 다.
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
IN 앞 에 NOT 연산 자 를 추가 하면 IN 과 반대 되 는 뜻 으로 목록 항목 에서 선택 하지 않 습 니 다.IN 사용 실례
uid 를 2,3,5 로 선택 한 사용자 데이터:
SELECT * FROM user WHERE uid IN (2,3,5)
검색 결 과 를 다음 과 같이 되 돌려 줍 니 다.IN 하위 검색
더 많은 경우,IN 목록 항목 의 값 은 명확 하지 않 으 며,하위 검색 을 통 해 얻 을 수 있 습 니 다:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
이 SQL 예 에서 우 리 는 모든 상태 가 0 인 사용자(금 지 될 수 있 음)를 찾 아 낸 모든 글 을 실현 했다.우선 하나의 조 회 를 통 해 모든 status=0 의 사용 자 를 얻 을 수 있 습 니 다.
SELECT uid FROM user WHERE status=0
그리고 검색 결 과 를 IN 의 목록 항목 으로 하여 최종 검색 결 과 를 실현 합 니 다.하위 검색 에서 되 돌아 오 는 결 과 는 필드 목록 항목 이 어야 합 니 다.IN 연산 자 보충 설명
IN 목록 항목 은 숫자 뿐만 아니 라 문자,시간,날짜 등 도 지원 하 며,column 형식 과 일치 하지 않 고 다양한 유형의 데이터 항목 을 혼합 하여 배열 할 수 있 습 니 다.
SELECT * FROM user WHERE uid IN(1,2,'3','c')
하나의 IN 은 한 필드 만 비교 할 수 있 습 니 다.더 많은 필드 를 지정 하려 면 AND 또는 OR 논리 연산 자 를 사용 할 수 있 습 니 다.SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
AND 또는 OR 논리 연산 자 를 사용 하면 IN 은 LIKE,>=,=등 연산 자 와 함께 사용 할 수 있다.
IN 연산 자의 효율 에 관 한 문제
만약 IN 의 목록 항목 이 확실 하 다 면,여러 OR 로 대체 할 수 있 습 니 다.
SELECT * FROM user WHERE uid IN (2,3,5)
// :
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
일반적으로 색인 필드 를 조작 할 경우 OR 를 사용 하 는 효율 이 IN 보다 높 지만 목록 항목 이 불확실 할 때(하위 조회 가 필요 할 경우)IN 연산 자 를 사용 해 야 한다 고 생각 합 니 다.또한 하위 조회 표 데이터 가 주 조회 보다 적 을 때 도 IN 연산 자 를 적용 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.