LIMIT 制限のある mySQL サブクエリ
MySQL では、IN 演算子を使用するサブクエリ内で LIMIT 句を使用しようとすると、エラーが発生する可能性がありますMySQL がこの機能をサポートしていないことを示すメッセージ。この記事では、この問題の解決策を提供します。これにより、テーブル内の最新の 15 レコードに関連する特定の条件に基づいてテーブルから行を削除できるようになります。
望ましい結果を得るには、次のクエリを利用できます。構造:
DELETE FROM posts WHERE id not in ( SELECT * FROM ( SELECT id FROM posts ORDER BY timestamp desc limit 0, 15 ) as t);
外側の DELETE ステートメントは、行の削除の対象として Posts テーブルを対象としています。 IN 演算子は、保持する必要がある行、つまりサブクエリの結果で見つかった行を識別するために使用されます。
サブクエリは、posts テーブルから id フィールドを選択し、結果をタイムスタンプの降順で並べ替えます。 LIMIT 句を適用して上位 15 レコードを取得します。エイリアス t を使用することで、サブクエリは効率的な処理のための一時テーブルを作成します。
この回避策により、MySQL の制限が効果的に排除され、最新の 15 件に含まれないすべての投稿を削除するという意図した操作を実行できるようになります。記録。
以上がサブクエリで LIMIT を使用して最新の 15 レコードに基づいて MySQL の行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。