MySQL-эта версия MySQL еще не поддерживает ' LIMIT & IN/ALL / ANY/SOME подзапрос



это код, который я использую



    $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


Как я могу исправить эту проблему ? его другой способ сделать это ... так что я не получаю ошибку ...

513   4  

4 ответов:

вместо того, чтобы использовать, вы можете использовать присоединиться

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

вы можете использовать, чтобы обойти эту ошибку.

$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
');

вам не нужен подзапрос. Попробуйте это:

 SELECT VID, thumb
 FROM video
 WHERE title LIKE "%'.$Channel['name'].'%"
 ORDER BY RAND() DESC
 LIMIT 1

в MySQL 5.0.26 и позже, вы получите сообщение об ошибке:

MySQL не поддерживает ограничение в подзапросах для некоторых операторов подзапросов:

ссылка.

почему вы не можете использовать простые: ?

SELECT v.VID, v.thumb
FROM video as v
WHERE title LIKE "%'.$Channel['name'].'%"
ORDER BY viewtime DESC
LIMIT 5

что за подзапросы здесь?

Comments

    Ничего не найдено.