MySQL 错误:解决“操作数应包含 1 列”问题
在你的 MySQL 查询中,你遇到了“操作数应包含 1 列”的错误。这个错误通常发生在子查询返回多列,而外层查询在该位置只期望单列的情况。
理解错误:
出错的查询包含一个子查询:
<code class="language-sql">(SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by)</code>
这个子查询检索两列,“posted_by” 和 “posted_by_id”。但是,你在外层查询中将这个子查询用作单列:
<code class="language-sql">COUNT( posts.solved_post ) AS solved_post, (SUBQUERY)</code>
这种不一致导致了“操作数应包含 1 列”的错误,因为外层查询在这个位置期望一个单列。
解决方法:
方法一:使用表连接
为了解决这个问题,考虑直接连接 "users" 表,而不是使用子查询。这将允许你显式地选择 "posted_by" 和 "posted_by_id" 列,而不会违反单列约束。
<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>
方法二:从子查询中选择单列
或者,如果你坚持使用子查询,你可以修改它只返回所需的列。例如,你可以只检索 "posted_by" 列:
<code class="language-sql">(SELECT users.username AS posted_by FROM users WHERE users.id = posts.posted_by)</code>
通过在子查询中选择单列,你可以确保它符合外层查询的单列要求。
以上是为什么我的 MySQL 查询返回'操作数应包含 1 列”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!