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

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

Susan Sarandon
リリース: 2025-01-12 15:26:43
オリジナル
498 人が閲覧しました

Why Does My MySQL Query Return an

MySQL エラー: 「オペランドには 1 列を含める必要がある」問題を修正

MySQL クエリで、「オペランドには 1 列を含める必要があります」エラーが発生しました。このエラーは通常、サブクエリが複数の列を返すが、外側のクエリではその位置に 1 つの列のみが必要な場合に発生します。

理解エラー:

エラーが発生したクエリにはサブクエリが含まれています:

<code class="language-sql">(SELECT users.username AS posted_by,
    users.id AS posted_by_id
    FROM users
    WHERE users.id = posts.posted_by)</code>
ログイン後にコピー

このサブクエリは、「posted_by」と「posted_by_id」という 2 つの列を取得します。ただし、このサブクエリは外部クエリの単一列として使用します:

<code class="language-sql">COUNT( posts.solved_post ) AS solved_post,
(SUBQUERY)</code>
ログイン後にコピー

外側のクエリではこの位置に 1 つの列が必要であるため、この不一致により「オペランドには 1 列が含まれている必要があります」エラーが発生します。

解決策:

方法 1: テーブル接続を使用する

この問題を解決するには、サブクエリを使用する代わりに、「users」テーブルに直接結合することを検討してください。これにより、単一列の制約に違反することなく、「posted_by」列と「posted_by_id」列を明示的に選択できるようになります。

<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>
ログイン後にコピー

方法 2: サブクエリから単一の列を選択します

サブクエリを使用する必要がある場合は、必要な列のみを返すようにサブクエリを変更することもできます。たとえば、「posted_by」列のみを取得できます:

<code class="language-sql">(SELECT users.username AS posted_by
    FROM users
    WHERE users.id = posts.posted_by)</code>
ログイン後にコピー

サブクエリで単一列を選択すると、それが外部クエリの単一列要件を確実に満たすようになります。

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

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