MySQL - 操作数应包含 1 列

标签 mysql sql mysql-error-1241

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

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

":cat"在我使用 PDO 时受我的 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 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046838/

相关文章:

mysql - 使用从计算另一个表中提取的值更新 mysql 行

mysql - 在 .htacces magento 上将 non.www 的规则重写为 https 到 www.https

MySQL 最近 7 天被忽略

Mysql order by regex varchar 无法正常工作

sql - 具有 ManyToMany 关系的 Doctrine NOT EXIST 条件

mysql 操作数应包含 1 列

mysql - SQL 错误 1241 : Operand should contain 1 column(s)

mysql - SQL 查询左连接表

java - 我可以使用什么可能的模式来存储单词组合?

mysql - SQL 错误 - #1241 - 操作数应包含 1 列