ユーザーが、WHERE 句で COUNT(*) 関数を使用して MySQL のデータをフィルタリングしようとしたときに問題が発生しました。 WHERE句。彼らは、大量のリソースを消費する可能性があるため、ネストされた SELECT ステートメントを使用せずにこのタスクを達成する効率的な方法を探していました。
ユーザーは、望ましい結果を示すために次の疑似コードを提示しました。
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
このアプローチの問題は、MySQL が WHERE 句で COUNT(*) などの集計関数をサポートしていないことです。この制限を回避するために、ユーザーは、ネストされた SELECT を使用して、一意の GID ごとに行数をカウントし、それに応じて結果をフィルター処理する可能性を検討しました。ただし、この方法は非効率的でリソースを大量に消費すると考えられていました。
幸いなことに、MySQL は GROUP BY 句と HAVING 句を使用して、より最適化されたソリューションを提供します。
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
このクエリは次の手順を実行します。
を利用するGROUP BY 句と HAVING 句を使用すると、このアプローチでは、ネストされた SELECT ステートメントに頼ることなく、効果的に望ましい結果が得られ、パフォーマンスと効率が向上します。
以上がネストされた SELECT を使用せずに MySQL でカウントに基づいてデータをフィルタリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。