본문 바로가기
MySql

MySQL MySql에서 IN 절을 사용하는 다른 접근 방식

by 베이스 공부 2021. 1. 3.
반응형

오늘 나는 다음과 같은 쿼리로 답변을 게시했습니다.

SELECT * FROM table_name where column_name IN (val1,val2,...)

다른 사용자가 다음과 같은 쿼리에 대한 답변을 게시했습니다.

SELECT * FROM table_name where val1 IN (column_name)

여기에서 볼 수 있듯이 column_name과 값의 위치가 바뀝니다.

expr IN (값, ...)

expr이 IN 목록의 값 중 하나와 같으면 1을 반환하고, 그렇지 않으면 0을 반환합니다. 모든 값이 상수이면 expr 유형에 따라 평가되고 정렬됩니다. 그런 다음 이진 검색을 사용하여 항목 검색이 수행됩니다. 이것은 IN 값 목록이 전적으로 상수로 구성된 경우 IN이 매우 빠르다는 것을 의미합니다.

mysql> SELECT 2 IN (0,3,5,7);
-> 0

mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
-> 1

위의 (내 쿼리)가 정확하다고 분명히 말하고 있습니다. 그러나 위의 두 쿼리는 모두 동일한 출력을 생성합니다.


이 질문은 IN 사용에 관한 표준 정보 소스 역할을합니다. 그 목적은 쿼리에서 IN에 대한 적절한 사용을 자세히 설명하는 자세하고 고품질의 답변을 제공하는 것입니다.

 

해결 방법

 


아래의이 문장을 사용한 간단한 설명에서,

SELECT * FROM TableName WHERE column1 IN (1, 2, 3, 4)
-- versus
SELECT * FROM TableName WHERE 1 IN (column1, column2, column3, column4)

첫 번째 문에는 여러 값과 비교 되는 하나의 열 만 포함됩니다.

SELECT  *
FROM   TableName
WHERE  column1 = 1 OR
       column1 = 2 OR
       column1 = 3 OR
       column1 = 4

두 번째 문은 여러 열과 비교 되는 입니다.

SELECT  *
FROM   TableName
WHERE  column1 = 1 OR
       column2 = 1 OR
       column3 = 1 OR
       column4 = 1

서로 약간 다릅니다.

업데이트 1

다음은 IN 절의 세 번째 형식입니다.


 

참조 페이지 https://stackoverflow.com/questions/16117492

 

 

반응형

댓글