ホームページ >データベース >mysql チュートリアル >IN 演算子を使用した MySQL のサブクエリ LIMIT 制限を回避するにはどうすればよいですか?

IN 演算子を使用した MySQL のサブクエリ LIMIT 制限を回避するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-14 03:13:14200ブラウズ

How to Work Around MySQL's Subquery LIMIT Restriction with IN Operator?

MySQL のサブクエリ制限との非互換性

エラー メッセージ「このバージョンの MySQL はまだ 'LIMIT & IN/ALL/ANY をサポートしていません」 /SOME subquery'" は、使用されている MySQL バージョンがサブクエリ内での LIMIT 句の使用をサポートしていないことを示しますIN などの特定の演算子を使用する場合。

解決策

この制限に対する 1 つの回避策は、IN サブクエリの代わりに JOIN を使用することです。次のコードは、このアプローチを示しています。

$Last_Video = $db->fetch_all('
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
');

このコード内:

  • テーブル エイリアス "v" は、外側の "video" テーブルに使用されます。
  • サブクエリを使用して、タイトル フィルターに一致するビデオの VID を選択し、再生時間の降順に並べ替えます。このサブクエリには「v2」というエイリアスが付けられています。
  • メインの「video」テーブルと VID 列の「v2」サブクエリを結合するために JOIN 句が使用されます。
  • 最終結果は制限されていますRAND() と LIMIT を使用して、ランダムに選択された 1 つのレコードに変換します。

以上がIN 演算子を使用した MySQL のサブクエリ LIMIT 制限を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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