当前位置: 首页 > 面试题库 >

MySQL-操作数应包含1列

单淳
2023-03-14
问题内容

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

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


 类似资料:
  • 问题内容: 我收到错误“操作数应包含1列”-但是我需要COUNT(e.id) 问题答案: 总有这样的:

  • 问题内容: 我正在尝试将表1中的数据插入表2中 table2的键是student_id。 假定没有任何重复项。 我得到错误: table2中只有四列。 问题答案: 语法错误,请从中删除。

  • 问题内容: 这个问题已经在这里有了答案 : 操作数应包含1列-MySQL NOT IN (3个答案) 6年前关闭。 该查询给我以下错误: 错误代码:1241。操作数应包含1列 有任何想法吗? 问题答案: 您不应该在子查询中包括在列表中。只是

  • 问题内容: 我尝试运行以下语句: 据我所知,应该将temp_cheques中的每个记录插入到VOUCHER中,并将ID和DENOMINATION字段与BOOK表中的条目相对应(temp_cheques来自数据库备份,我正在尝试以其他格式重新创建)。但是,当我运行它时,出现错误: 我正在SQuirrel中运行此程序,而其他任何查询都没有问题。我的查询语法有问题吗? 编辑: BOOK的结构为: tem

  • 我正在尝试制作一个触发器,该触发器检测您何时在表RECHOND的FLIGHTTICKEID列中插入一个重复的值,然后在另一个表中插入一些数据。 这看起来是可以的,但是当我尝试将值插入到表中以查看触发器是否工作时,使用下面的insert into时,我得到了他的错误:错误代码:1241。操作数应包含1列。 如果我移除触发器,Insert工作正常,所以我想我在触发器上做错了什么。有人知道会是什么吗?谢

  • 然而,试图创建一个最多4人的组时,具有相同ID的人不能在同一个组中,例如“Tim ID1、Josh ID2、Ben ID3、George ID4”,这将是一个罚款,但“James ID2”不能加入该组,因为Josh已经在其中了。 我不明白为什么这种方法不起作用,任何帮助都将不胜感激。