mysql错误不断出现-#1241-操作数应包含1列-这意味着什么?
当我在mysql中运行我的查询时,我不断得到以下错误: 操作数应包含1列 我怎么修理它mysql错误不断出现-#1241-操作数应包含1列-这意味着什么?,mysql,Mysql,当我在mysql中运行我的查询时,我不断得到以下错误: 操作数应包含1列 我怎么修理它 SELECT( SELECT Tag, COUNT(*) AS magnitude FROM (SELECT a.* FROM sport b join sport a on a.Tag = b.Name where b.sport_ID > a.sport_ID and a.Tag = 'Football') as ball LIMIT 1 ) 最终选择没有指定任何列。试试这个: SELE
SELECT( SELECT Tag, COUNT(*) AS magnitude
FROM (SELECT a.*
FROM sport b
join sport a
on a.Tag = b.Name
where b.sport_ID > a.sport_ID and a.Tag = 'Football') as ball
LIMIT 1 )
最终选择没有指定任何列。试试这个:
SELECT * from ( SELECT Tag, COUNT(*) AS magnitude
FROM ( SELECT *
FROM sport b
join sport a
on a.Tag = b.Name
where b.sport_ID > a.sport_ID and a.Tag = 'Football') as ball
group by Tag
LIMIT 1 ) as ball2
甚至b.sport\u ID>b.sport\u ID都没有意义。您的子查询有两列:标记和大小。这不是标量子查询 错误的解释是,选择列表中的每个子查询都必须是标量子查询,这意味着它必须只返回一列和一行 示例:让我们保持简单并使用文本值查询,这样我们甚至不引用表。我们为选择列表中的每个项目分配一个列别名
SELECT
123 AS colum1,
456 AS column2,
(SELECT 789, 'abc') AS column3;
但是等等!如何为789和“abc”分配列别名column3
?这是模棱两可的
事实证明这是不允许的,并且会生成一条错误消息,因为它是不明确的。子查询返回了两列,但这违反了外部查询的select列表中的每个项必须是一列的规则。我们可以这样解决:
SELECT
123 AS colum1,
456 AS column2,
(SELECT 789) AS column3,
(SELECT 'abc') AS column4;
现在,选择列表中的每个项目只返回一列
存在一个类似的规则,要求选择列表中的子查询也返回不超过一行:
SELECT
123 AS colum1,
456 AS column2,
(SELECT some_column FROM table_with_multiple_rows) AS column3;
这是错误的,因为子查询返回多个值,并且无法将所有这些值填充到外部查询结果的一行中
有几种方法可以解决这个问题。确保子查询返回的行不超过一行。使用WHERE子句指定一行(表的主键或唯一键上的条件):
或者使用限制1:
SELECT
123 AS colum1,
456 AS column2,
(SELECT some_column FROM table_with_multiple_rows
LIMIT 1) AS column3;
无论哪种方式,您的子查询最多返回一行(它可以匹配零行,在这种情况下,子查询的结果将为空)。最有可能,因为您的
SELECT
为空。已更新查询。在使用分组函数时,还缺少GROUPBY子句。您收到的是相同的错误还是不同的错误?我现在收到一条消息#1248-每个派生表都必须有自己的别名是的,每个表都应该有别名。我已经更新了查询。我很困惑now@Beck:参见上面的示例。现在我被告知sport_ID是一个重复的列名sounds,就像您有一个派生表子查询,其中并非所有列都有不同的名称。您必须为其中一个设置别名,这意味着您不能使用SELECT*
。我不会猜测您现在运行的是什么查询。祝你好运!
SELECT
123 AS colum1,
456 AS column2,
(SELECT some_column FROM table_with_multiple_rows
LIMIT 1) AS column3;