在正在创建的系统上工作时,我尝试在项目中使用以下查询:
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来源:stack overflow