ホームページ > データベース > mysql チュートリアル > NOT IN サブクエリで LIMIT を使用すると MySQL が失敗するのはなぜですか?

NOT IN サブクエリで LIMIT を使用すると MySQL が失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-16 00:54:03
オリジナル
871 人が閲覧しました

Why Does MySQL Fail When Using LIMIT in NOT IN Subqueries?

NOT IN サブクエリの LIMIT: MySQL の制限

MySQL を使用する場合、LIMIT 句内でサブクエリを使用するときに制限が発生する場合があります。特定の範囲に含まれないレコードを削除しようとすると、一般的な問題が 1 つ発生します。

最新の 15 件に含まれない投稿を削除するとします。単純なアプローチには、次のクエリが含まれる可能性があります。

DELETE FROM posts 
WHERE id NOT IN 
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15);
ログイン後にコピー

ただし、このクエリは失敗する可能性が高く、「MySQL はまだ LIMIT & IN/ALL/ANY/SOME サブクエリをサポートしていません。」などのエラー メッセージが返されます。

制限事項

この制限を克服するには、サブクエリを別のサブクエリ内に囲むことで回避策を採用できます。

DELETE FROM posts 
WHERE id NOT IN 
(SELECT * FROM (
    SELECT id 
    FROM posts 
    ORDER BY timestamp DESC 
    LIMIT 0, 15
) AS t);
ログイン後にコピー

この変更されたクエリでは、最新の 15 件の投稿を選択するサブクエリが使用されます。にはエイリアス「t」が割り当てられ、外側のサブクエリはそのエイリアスを使用して除外された ID を取得します。結果は、目的の削除を実現する有効なクエリです。

以上がNOT IN サブクエリで LIMIT を使用すると MySQL が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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