본문 바로가기

Developer/DataBase

MySQL 5.7 doens't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

현재 mysql 5.7.26 버전 사용중.

SELECT VERSION();

 

위의 버전에서는 LIMIT 이 포함된 서브쿼리를 지원하지 않는 것으로 확인하였다.

SELECT  *
FROM `test_table`
WHERE `number` IN (SELECT DISTINCT `number` FROM test_table LIMIT 5);

위와 같이 LIMIT 이 포함된 서브쿼리가 있는 쿼리를 실행시키면 아래와 같이 에러가 발생한다.

 

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

 

이 때, 위의 쿼리를 직접 사용할 수는 없지만 임시테이블을 사용하여 쿼리를 사용할 수 있다.

SELECT `number`
FROM `test_table`
WHERE `number` IN (SELECT * 
                   FROM (SELECT DISTINCT `number` 
                   		 FROM test_table 
                         LIMIT 5) as t );

위와 같이 LIMIT 쿼리가 포함된 쿼리로 임시 테이블을 생성하도록하면 LIMIT 이 포함된 쿼리도 서브 쿼리로 사용 가능하다.

그리고 alias를 사용하는부분도 필수이다. ('as t' 를 사용한 곳)

'Developer > DataBase' 카테고리의 다른 글

redis 란, 기본사용법  (0) 2021.09.17
MySQL 테이블 삭제하기 (DROP TABLE)  (0) 2021.08.12
MySQL Query 추적  (0) 2021.01.13
[MySQL] 백업 도구 - mysqldump  (0) 2021.01.03
[MySQL] Replication(복제)  (0) 2021.01.02