ホームページ > データベース > mysql チュートリアル > MySQL クエリが「オペランドには 1 つの列を含める必要があります」を返すのはなぜですか?

MySQL クエリが「オペランドには 1 つの列を含める必要があります」を返すのはなぜですか?

Susan Sarandon
リリース: 2025-01-12 15:22:42
オリジナル
791 人が閲覧しました

Why Does My MySQL Query Return

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」テーブルに直接参加すると、いくつかの利点があります:

  • 柔軟性: 「users」テーブルからの列の選択がより簡単になり、必要なデータのみを選択できるようになります。
  • サブクエリの簡素化: サブクエリを削除すると、クエリ全体が簡素化され、読み取りと保守が容易になります。
  • パフォーマンスの向上: テーブルを直接結合すると、必要なデータを取得するために必要なクエリの数が減り、パフォーマンスが向上する場合があります。

以上がMySQL クエリが「オペランドには 1 つの列を含める必要があります」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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