MySQL 중첩 쿼리 오류: 'LIMIT & IN/ALL/ANY/SOME 하위 쿼리'는 지원되지 않습니다
이 오류는 MySQL의 IN 절 내에 LIMIT 절이 있는 하위 쿼리. 이 문제를 해결하기 위한 대체 접근 방식은 JOIN:
원본 코드:
$Last_Video = $db->fetch_all(' SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1 ');
리팩터링된 코드를 활용하는 것입니다. JOIN:
SELECT v.VID, v.thumb FROM video AS v INNER JOIN (SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5) as v2 ON v.VID = v2.VID ORDER BY RAND() LIMIT 1
설명:
JOIN 작업은 공통 VID 열을 기반으로 두 테이블(비디오 및 v2)을 연결합니다. 이렇게 하면 현재 MySQL 버전에서 지원되지 않는 IN 절 내에 LIMIT 절이 있는 중첩 쿼리가 필요하지 않습니다.
JOIN의 이점:
위 내용은 JOIN을 사용하여 MySQL의 'LIMIT & IN/ALL/ANY/SOME 하위 쿼리' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!