MySQL. Эта версия MySQL еще не поддерживает "LIMIT & IN/ALL/ANY/SOME подзапрос
это код, который im использует
$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
');
Это ошибка, которая дает мне
Message: Error during SQL execution: SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%funny%" ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1<br />
MySQL Error: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'<br />
MySQL Errno: 1235
как я могу исправить эту проблему? его другим способом сделать это... так что я не получаю ошибку...
Ответы
Ответ 1
Вместо использования IN вы можете использовать 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
Ответ 2
Вы можете использовать ниже, чтобы обойти эту ошибку.
$Last_Video = $db->fetch_all('
SELECT VID, thumb
FROM video
WHERE VID IN (select * from (
SELECT VID
FROM video
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5) temp_tab)
ORDER BY RAND()
LIMIT 1
');
Ответ 3
Здесь вам не нужен подзапрос. Попробуйте следующее:
SELECT VID, thumb
FROM video
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY RAND() DESC
LIMIT 1
В MySQL 5.0.26 и более поздних версиях вы получите сообщение об ошибке:
MySQL не поддерживает LIMIT в подзапросах для определенных операторов подзапроса:
Ссылка.
Ответ 4
Почему вы не можете использовать простые:?
SELECT v.VID, v.thumb
FROM video as v
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5
что для подзапросов здесь?