MySQL-操作数应包含1列

在正在创建的系统上工作时,我尝试在项目中使用以下查询:

SELECT

topics.id,

topics.name,

topics.post_count,

topics.view_count,

COUNT( posts.solved_post ) AS solved_post,

(SELECT users.username AS posted_by,

users.id AS posted_by_id

FROM users

WHERE users.id = posts.posted_by)

FROM topics

LEFT OUTER JOIN posts ON posts.topic_id = topics.id

WHERE topics.cat_id = :cat

GROUP BY topics.id

当我使用PDO时,“:cat”受我的PHP代码约束。2是“:cat”的有效值。

该查询虽然给我一个错误:“#1241-操作数应包含1列”

让我感到困扰的是,我认为该查询不会有问题。选择列,然后从另一个表中选择另外两个,然后从那里继续。我只是不知道是什么问题。

有没有简单的解决方法,或者是写查询的另一种方法?

回答:

您的子查询正在选择两列,而您正在使用它来投影一列(作为外部SELECT子句的一部分)。在这种情况下,您只能从此类查询中选择一列。

考虑users改为加入表;在选择所需的列时,这将为您提供更大的灵活性users

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

以上是 MySQL-操作数应包含1列 的全部内容, 来源链接: utcz.com/qa/416992.html

回到顶部