Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql错误不断出现-#1241-操作数应包含1列-这意味着什么?_Mysql - Fatal编程技术网

mysql错误不断出现-#1241-操作数应包含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

当我在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 )

最终选择没有指定任何列。试试这个:

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;