📌 MYSQL은 서브쿼리에서 LIMIT 사용이 불가능하다.
SELECT a.title, a.body, b.nname, SUM(hit) AS total_hit
FROM article a
INNER JOIN MEMBER b ON a.mno = b.mno
WHERE a.ano IN (SELECT ano
FROM board a
INNER JOIN article b ON a.bno = b.bno
GROUP BY ano
ORDER BY SUM(hit) DESC
LIMIT 3)
GROUP BY a.title, a.body, b.nname
> 위처럼 코드 작성 시 '오류 코드: 1235 This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery''로 에러 메세지가 뜬다.
📌 LIMIT으로 제한을 두어야할 경우 JOIN을 이용해서 작성하면 된다.
SELECT a.title, a.body, b.nname, SUM(a.hit) AS total_hit
FROM article a
INNER JOIN MEMBER b ON a.mno = b.mno
INNER JOIN (
SELECT d.ano, SUM(d.hit) AS total_hit
FROM board c
INNER JOIN article d ON c.bno = d.bno
GROUP BY d.ano
) e ON a.ano = e.ano
GROUP BY a.title, a.body, b.nname
ORDER BY e.total_hit DESC
LIMIT 3
> 데이터 join 후 Order by로 서브쿼리의 LIMIT 의 기준을 가져와서 본 쿼리에서 LIMIT으로 제한을 두면 원하는 데이터가 나온다.