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

JOIN を使用した MySQL の「LIMIT & IN/ALL/ANY/SOME subquery」エラーを修正する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 10:08:18812ブラウズ

How to Fix MySQL's

MySQL ネストされたクエリ エラー: 'LIMIT & IN/ALL/ANY/SOME サブクエリ' はサポートされていません

このエラーは、使用しようとすると発生しますMySQL の IN 句内に LIMIT 句を含むサブクエリ。この問題を解決する別のアプローチは、JOIN:

元のコード:

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

リファクタリングされたコードを使用することです。 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

説明:

JOIN 操作は、共通の VID 列に基づいて 2 つのテーブル (ビデオと v2) をリンクします。これにより、現在の MySQL バージョンではサポートされていない、IN 句内の LIMIT 句を使用したネストされたクエリが不要になります。

JOIN の利点:

  • データベース クエリの数を減らすことでパフォーマンスが向上しました。
  • よりシンプルで読みやすいクエリ構造。
  • 複数のテーブルと条件を使用したより複雑なクエリ シナリオのサポート。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。