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' 表提供了几个好处:
以上是为什么我的 MySQL 查询返回'操作数应包含 1 列”?的详细内容。更多信息请关注PHP中文网其他相关文章!