집 >데이터 베이스 >MySQL 튜토리얼 >mysql in은 무슨 뜻인가요?
mysql in은 where 표현식에 자주 사용됩니다. 해당 기능은 특정 범위 내의 데이터를 쿼리하는 것입니다. 사용 구문은 "(value1, value2, value3,...)의 where 필드에서 선택"과 같습니다.
이 문서의 운영 환경: Windows 7 시스템, mysql5.7, Dell G3.
mysql in
mysql의 in 사용법에 대한 자세한 설명
1. mysql의 기본 사용법
in은 where 표현식에 자주 사용되며, 그 기능은 내의 데이터를 쿼리하는 것입니다. 특정 범위.
select * from where field in (value1,value2,value3,…)
IN 앞에 NOT 연산자가 오면 IN과 반대되는 의미, 즉 목록 항목 내에서 선택하지 않는다는 의미입니다.
select * from where field not in (value1,value2,value3,…)
2. IN 하위 쿼리
더 많은 경우 IN 목록 항목의 값은 다음과 같습니다.
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
하위 쿼리를 통해 얻을 수 있는불명확함 이 SQL 예에서는 상태가 0(차단되었을 수 있음)인 모든 사용자의 모든 기사를 찾는 방법을 구현했습니다. 먼저 쿼리를 통해 상태=0인 모든 사용자를 가져옵니다.
SELECT uid FROM user WHERE status=0
그런 다음 쿼리 결과를 IN의 목록 항목으로 사용하여 최종 쿼리 결과를 얻습니다. 하위 쿼리에 반환되는 결과는 필드 목록 항목이어야 합니다.
in 하위 쿼리에서 쿼리 효율성이 낮은 문제가 자주 발생합니다.
1. 여전히 in 하위 쿼리를 사용하고 한 번 더 쿼리합니다. LEFT JOIN
SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )
3. 연산 보충 지침
IN 목록 항목은 숫자뿐만 아니라 문자, 심지어 시간 및 날짜 유형까지 지원하며 이러한 다양한 유형의 데이터 항목은 열 유형과 일치하지 않고 혼합 및 정렬될 수 있습니다.
SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode
One IN은 하나만 가능합니다. 하나의 필드에 사용됩니다. 더 많은 필드를 지정하려면 AND 또는 OR 논리 연산자를 사용할 수 있습니다.
SELECT * FROM user WHERE uid IN(1,2,'3','c')
AND 또는 OR 논리 연산자를 사용한 후 IN은 LIKE와 같은 다른 연산자와 결합될 수도 있습니다. , >=, = 등이 함께 사용됩니다.
4. IN 연산자의 효율성에 관하여
IN의 목록 항목이 확실하면 대신 여러 OR을 사용할 수 있습니다.
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','manong')
// 이에 상응하는 것은:
SELECT * FROM user WHERE uid IN (2,3,5)
일반적으로 다음과 같이 믿어집니다. 1. 인덱스 필드에서 작업하는 경우 OR을 사용하는 것이 IN보다 효율적이지만 목록 항목이 불확실한 경우(예: 결과를 얻으려면 하위 쿼리가 필요함) IN 연산자를 사용해야 합니다. 또한, 서브쿼리 테이블의 데이터가 메인쿼리보다 작은 경우에도 IN 연산자를 적용할 수 있다.
2. in or or가 필드에 인덱스를 추가하지 않는 경우, 더 많은 필드가 연결될수록(1, 2, 3, 4 또는...) or의 쿼리 효율성은 in보다 훨씬 낮습니다.
추천 학습: "
mysql 비디오 튜토리얼"
위 내용은 mysql in은 무슨 뜻인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!