반응형
오늘 나는 다음과 같은 쿼리로 답변을 게시했습니다.
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
반응형
'MySql' 카테고리의 다른 글
MySQL GridView를 mysql로 채우는 방법은 무엇입니까? (0) | 2021.01.03 |
---|---|
MySQL 두 개의 MYSQL 테이블을 동일한 열 이름으로 결합 (0) | 2021.01.03 |
MySQL mysqli bind_param ()은 참조가 될 것으로 예상됩니다. (0) | 2021.01.03 |
MySQL 모든 원격 사용자에 대해 SSL을 요구하는 방법 (0) | 2021.01.03 |
MySQL 이동 평균 MySQL 계산? (0) | 2021.01.03 |
댓글