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

MySQL NOT IN エラー: 「オペランドには 1 つの列が含まれている必要がある」のはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-12 08:49:43293ブラウズ

MySQL NOT IN Error: Why

MySQL NOT IN クエリが失敗しました: オペランドには 1 つの列が含まれている必要があります

MySQL NOT IN クエリで「オペランドには 1 列を含める必要があります」エラーが発生した場合は、根本原因を理解することが重要です。

このエラーは、NOT IN 条件のオペランドに複数の列が含まれているために発生します:

<code class="language-sql">SELECT * from campaigns WHERE id not in (
    SELECT 
        e.id_campaign, d.name, d.frequency, d.country, d.referral, d.bid, d.status, COUNT(e.id) AS countcap  </code>

NOT IN 演算子はオペランドが単一の列である必要がありますが、サブクエリは複数の列を含む行を返します。

解決策:

このエラーを解決する 1 つの方法は、サブクエリから必要な列を抽出し、それを外側のクエリの ID 列と比較することです。

<code class="language-sql">select *
from campaigns 
where id not in (
    select id_campaign from (
        select e.id_campaign as id_campaign, d.frequency, e.id
        from campaigns d left join served e on d.id = e.id_campaign
        where d.status = 'Active'
        group by e.id_campaign 
        having count(e.id) < d.frequency 
    ) as subquery
)</code>

サブクエリの結果を 1 つの列 id_campaign に制限することで、NOT IN 演算子が正しく使用されるようにします。 さらに、一部の MySQL バージョンで必要となるサブクエリのエイリアス as subquery を追加しました。 これにより、クエリの明確さと読みやすさが向上します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。