首页 > 数据库 > mysql教程 > 为什么我的 MySQL 查询返回'操作数应包含 1 列”?

为什么我的 MySQL 查询返回'操作数应包含 1 列”?

Susan Sarandon
发布: 2025-01-12 15:22:42
原创
791 人浏览过

Why Does My MySQL Query Return

MySQL 错误:"操作数应包含 1 列" 的解决方法

在最近的 SQL 查询中,一位开发者遇到了一个令人困惑的错误:“操作数应包含 1 列”。这个错误阻止了他们的进度,但经过仔细调查,找到了解决方案。

问题查询试图从 'topics' 和 'posts' 两个表中检索数据,并包含一个子查询的统计信息,该子查询从 'users' 表中选择了两个列。然而,这个子查询试图将两列投影为一列,导致了错误消息。

理解错误:

“操作数应包含 1 列” 错误发生在查询试图对多列进行操作(例如,聚合)时,就好像它们是单个列一样。在这个特定案例中,子查询从 'users' 表中同时选择了 'username' 和 'id'。

解决问题:

为了解决这个问题,子查询被重新配置为通过直接连接到 'users' 表来仅选择一列。这种方法允许更灵活地选择所需的列。

重写的查询:

<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板