在我正在创建的系统上工作时,我尝试在我的项目中使用以下查询:
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列“
让我困惑的是,我会认为这个查询不会有问题。选择列,然后从另一个表中再选择两个,然后从那里继续。我就是不明白问题出在哪里。
有没有简单的解决方法,或者用另一种方式来写我的查询?
发布于 2012-12-27 06:10:25
您的子查询选择了两列,而您正在使用它来投影一列(作为外部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
发布于 2016-04-01 14:29:30
如果在JOIN
的ON
子句中意外使用逗号而不是AND
,也可能发生此错误
JOIN joined_table ON (joined_table.column = table.column, joined_table.column2 = table.column2)
^
should be AND, not a comma
发布于 2017-05-26 17:43:10
如果在WHERE
子句中意外使用=
而不是IN
,也可能发生此错误:
例如:
WHERE product_id = (1,2,3);
https://stackoverflow.com/questions/14046838
复制相似问题