ホームページ >データベース >mysql チュートリアル >MySQL NOT IN エラー: 「オペランドには 1 つの列が含まれている必要がある」のはなぜですか?
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 サイトの他の関連記事を参照してください。