it-swarm.dev

MySQL - لا يدعم هذا الإصدار من MySQL بعد "LIMIT & IN/ALL/ANY/SOME subquery

هذا هو الكود ما ايم باستخدام

    $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

كيف يمكنني حل هذه المشكلة؟ طريقة أخرى لجعله ... لذلك أنا لا أحصل على الخطأ ...

69
Mihai Viteazu

بدلاً من استخدام 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
122
Mike Brant

يمكنك استخدام أدناه لتجاوز هذا الخطأ.

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

لا تحتاج إلى استعلام فرعي هنا. جرب هذا:

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

في MySQL 5.0.26 والإصدارات الأحدث ، سوف تحصل على خطأ:

لا يدعم MySQL LIMIT في الاستعلامات الفرعية لبعض مشغلي الاستعلامات الفرعية:

مرجع .

6
echo_Me

لماذا لا يمكنك استخدام بسيطة:؟

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

ماذا عن الاستفسارات الفرعية هنا؟

0
Vladimir Krasnobaev