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 运算符要求其操作数为单列,而子查询返回包含多列的行。
解决方案:
解决此错误的一种方法是从子查询中提取必要的列,并将其与外部查询的 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>
通过将子查询结果限制为单列 id_campaign
,确保了 NOT IN
运算符的正确使用。 此外,我们还为子查询添加了一个别名 as subquery
,这在某些MySQL版本中是必要的。 这改进了查询的清晰度和可读性。
以上是MySQL NOT IN 错误:为什么'操作数应包含 1 列”?的详细内容。更多信息请关注PHP中文网其他相关文章!