현재 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 |