データベース開発中に、MySQL エラーが発生することはよくあります。 このようなエラーの 1 つである「'#1241 - Operand should contain 1 columns(s)'」は、複数の列を返すサブクエリを使用するときに頻繁に発生します。これは通常、サブクエリが単一列の結果を期待する外部クエリに複数の列を提供する場合に発生します。
エラー メッセージは、サブクエリによって返される列の数とメイン クエリの期待値との間に互換性がないことを示しています。 外側の SELECT
ステートメントは、複数列のサブクエリの結果を単一の値であるかのように使用しようとします。
このエラーは、クエリ構造を調整することで解決できます。ここでは 2 つの効果的なアプローチを紹介します:
<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, u.username AS posted_by, u.id AS posted_by_id FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id LEFT OUTER JOIN users u ON u.id = p.posted_by WHERE t.cat_id = :cat GROUP BY t.id;</code>
MAX()
、MIN()
、AVG()
など) の使用、または users
テーブルからの特定の列の選択が含まれる場合があります。<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, (SELECT u.username FROM users u WHERE u.id = p.posted_by) AS posted_by_username FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id GROUP BY t.id;</code>
これらの解決策のいずれかを実装すると、オペランド エラーが修正され、MySQL データベースから必要なデータが正確に取得されます。 最適なソリューションの選択は、特定のデータ要件とクエリの設計によって異なります。
以上がMySQL のサブクエリでの「オペランドには 1 つの列が含まれている必要があります」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。