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 サイトの他の関連記事を参照してください。