MySQL エラー:「操作には 1 つの列が含まれている必要があります」解決策
最近の SQL クエリで、開発者は「オペランドには 1 列を含める必要があります。」というわかりにくいエラーに遭遇しました。このエラーにより進行が停止しましたが、慎重に調査した結果、解決策が見つかりました。
問題のクエリは、「topic」と「posts」という 2 つのテーブルからデータを取得しようとしています。また、「users」テーブルから 2 つの列を選択するサブクエリの統計が含まれています。ただし、このサブクエリは 2 つの列を 1 つに投影しようとしたため、エラー メッセージが表示されました。
理解エラー:
「オペランドには 1 列を含める必要があります」エラーは、クエリが複数の列 (集計など) を 1 つの列であるかのように操作しようとすると発生します。この特定のケースでは、サブクエリは「users」テーブルから「username」と「id」の両方を選択します。
解決された問題:
この問題を解決するために、「users」テーブルに直接結合することで 1 つの列のみを選択するようにサブクエリが再構成されました。このアプローチにより、必要な列をより柔軟に選択できるようになります。
書き換えられたクエリ:
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT(posts.solved_post) AS solved_post, users.username AS posted_by, users.id AS posted_by_id FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id LEFT OUTER JOIN users ON users.id = posts.posted_by WHERE topics.cat_id = :cat GROUP BY topics.id</code>
直接接続の利点:
「users」テーブルに直接参加すると、いくつかの利点があります:
以上がMySQL クエリが「オペランドには 1 つの列を含める必要があります」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。