ホームページ > データベース > mysql チュートリアル > MySQL の「LIMIT & IN/ALL/ANY/SOME Subquery」エラーを修正する方法?

MySQL の「LIMIT & IN/ALL/ANY/SOME Subquery」エラーを修正する方法?

Mary-Kate Olsen
リリース: 2024-12-13 02:47:10
オリジナル
306 人が閲覧しました

How to Fix MySQL's

MySQL: 'LIMIT & IN/ALL/ANY/SOME サブクエリ' エラーへの対処

MySQL を使用すると、エラー「」が発生することがあります。このバージョンの MySQL はまだ「LIMIT & IN/ALL/ANY/SOME サブクエリ」をサポートしていません。このエラーは通常、LIMIT 句と IN などの特定の集合演算子を含むサブクエリを使用しようとしたときに発生します。

次の PHP コードを考えてみましょう。

$Last_Video = $db->fetch_all('
    SELECT VID, thumb
    FROM video
    WHERE VID IN (
        SELECT VID
        FROM video
        WHERE title LIKE "%'.$Channel['name'].'%quot;
        ORDER BY viewtime DESC
        LIMIT 5)
    ORDER BY RAND()
    LIMIT 1
');
ログイン後にコピー

このコードは、タイトルに特定の文字列を含むビデオのセットからランダムなビデオ。ただし、「LIMIT & IN/ALL/ANY/SOME subquery」構文をサポートしていない MySQL バージョンは、前述のエラーで失敗します。

解決策: IN を JOIN に置き換えます

この問題を解決するには、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
ログイン後にコピー

この変更されたクエリでは、INNER JOIN を使用して 2 つのテーブルをリンクし、一致するビデオ ID のみが選択されるようにします。 JOIN 操作は IN 演算子を置き換え、「LIMIT & IN/ALL/ANY/SOME サブクエリ」をサポートしていない MySQL バージョンでもクエリを正常に実行できるようにします。

以上がMySQL の「LIMIT & IN/ALL/ANY/SOME Subquery」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート