119

これは私が使用しているコードです

    $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

どうすればこの問題を解決できますか? それを作る他の方法...だから私はエラーを取得しません...

4

6 に答える 6

184

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
于 2013-07-27T00:10:26.847 に答える
5

ここではサブクエリは必要ありません。これを試して:

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

MySQL 5.0.26 以降では、次のエラーが発生します。

MySQL は、特定のサブクエリ演算子のサブクエリで LIMIT をサポートしていません。

参照

于 2013-07-26T23:58:20.453 に答える
0

simple: を使用できないのはなぜですか?

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

ここでサブクエリは何ですか?

于 2013-10-25T08:46:45.423 に答える
0

mysql は無効になっています ORACLE を読んでください

DELETE FROM wall_orders WHERE order_id IN (
SELECT order_id FROM (SELECT order_id, COUNT(orders_products_id) as cnt FROM wall_orders_productsGROUP BY order_id ORDER BY cnt DESC LIMIT 1000) y1 WHERE cnt > 170 LIMIT 1000)

235 - このバージョンの MariaDB はまだ「LIMIT & IN/ALL/ANY/SOME サブクエリ」をサポートしていません

単純な SQL であり、不可能

于 2021-12-26T17:46:56.067 に答える
0

追加これはあなたの状態です

(SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC)
于 2020-02-17T13:11:29.907 に答える