首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL -操作数应包含1列

MySQL -操作数应包含1列
EN

Stack Overflow用户
提问于 2012-12-27 06:08:15
回答 8查看 351.8K关注 0票数 107

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

代码语言:javascript
复制
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列“

让我困惑的是,我会认为这个查询不会有问题。选择列,然后从另一个表中再选择两个,然后从那里继续。我就是不明白问题出在哪里。

有没有简单的解决方法,或者用另一种方式来写我的查询?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-12-27 06:10:25

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

请考虑改为连接到users表;这将使您在从users中选择所需的列时具有更大的灵活性。

代码语言:javascript
复制
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
票数 120
EN

Stack Overflow用户

发布于 2016-04-01 14:29:30

如果在JOINON子句中意外使用逗号而不是AND,也可能发生此错误

代码语言:javascript
复制
JOIN joined_table ON (joined_table.column = table.column, joined_table.column2 = table.column2)
                                                        ^
                                             should be AND, not a comma
票数 19
EN

Stack Overflow用户

发布于 2017-05-26 17:43:10

如果在WHERE子句中意外使用=而不是IN,也可能发生此错误:

例如:

代码语言:javascript
复制
WHERE product_id = (1,2,3);
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14046838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档