Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
Sql 子查询返回了多个值_Sql - Fatal编程技术网

Sql 子查询返回了多个值

Sql 子查询返回了多个值,sql,Sql,我必须编写一个查询,返回的图书价格大于同类图书的平均价格。因此,我使用以下查询完成了此操作: select title from titles where price > ( select avg(price) from titles group by type ) 但是,它会抛出以下错误: subquery returned more than 1 value >不能用于值列表是可以理解的。但我想知道解决这个问题的方法。请让我知道我需要使用的查询。DB是酒吧 tit

我必须编写一个查询,返回的图书价格大于同类图书的平均价格。因此,我使用以下查询完成了此操作:

select title
from titles
where price >
(
   select avg(price)
   from titles
   group by type
)
但是,它会抛出以下错误:

subquery returned more than 1 value
>不能用于值列表是可以理解的。但我想知道解决这个问题的方法。请让我知道我需要使用的查询。DB是酒吧

titles table:

title_id , title, type, price, advance, notes, sales

因此,我需要使用类似类型的price>average(price)来获取标题

您有多个类型,因此每个类型都返回一个平均值

您可以查看或运算符以查看项目列表

如果您正在寻找价格高于所有平均类型的书籍,例如:

SELECT title
FROM titles
WHERE price > ALL
(
   SELECT AVG(price)
   FROM titles
   GROUP BY type
)

类似地,您可以将
ALL
更改为
SOME
ANY
,以满足您的需要。

您有多个类型,因此每个类型都返回一个平均值

select title 
from titles 
where price > 
(select avg(price) from titles) 
您可以查看或运算符以查看项目列表

如果您正在寻找价格高于所有平均类型的书籍,例如:

SELECT title
FROM titles
WHERE price > ALL
(
   SELECT AVG(price)
   FROM titles
   GROUP BY type
)
同样,您可以将
ALL
更改为
SOME
ANY
,以满足您的需要

select title 
from titles 
where price > 
(select avg(price) from titles) 
上面的查询假设您希望比较所有标题价格的平均值。这将返回一个标量值并允许您的查询成功


上面的查询假设您希望比较所有标题价格的平均值。这将返回标量值并允许您的查询成功。

关键是使用主查询中的类型来筛选子查询中的类型

SELECT t.title 
    FROM titles t 
    WHERE t.price > (SELECT AVG(t2.price) 
                         FROM titles t2
                         WHERE t2.type = t.type)

关键是使用主查询中的类型来筛选子查询中的类型

SELECT t.title 
    FROM titles t 
    WHERE t.price > (SELECT AVG(t2.price) 
                         FROM titles t2
                         WHERE t2.type = t.type)

您需要从子查询和主查询链接类型,例如:

select
   a.title
from
   titles a
where
   a.price > ( select avg(b.price) from titles b where a.type = b.type group by b.type)

您需要从子查询和主查询链接类型,例如:

select
   a.title
from
   titles a
where
   a.price > ( select avg(b.price) from titles b where a.type = b.type group by b.type)

如果“标题”表中有多个“类型”,则group by将导致多行。如果您只需要整个表的平均价格,请删除子查询中的“分组依据”。您使用的sql是什么风格的?如果“标题”表中有多个“类型”,则分组依据将导致多行。如果您只需要整个表的平均价格,请删除子查询中的“group by”。您使用的是什么风格的sql?但它应该获得类似类型的平均价格,然后检查价格column@Nishanth然后在子查询中需要有一个过滤器,以便它只返回一个值。如果你给我更多关于
标题
表的信息,我可以为你写出来。但是它应该得到类似类型的平均值,然后检查价格column@Nishanth然后在子查询中需要有一个过滤器,以便它只返回一个值。如果你给我更多关于
标题
表格的信息,我可以帮你写出来。也许OP想要的比我的答案还多,+1。我同意@AdamWenger。我可以更新我的答案,但它会准确地反映你在这里+1很可能OP想要的比我的答案还多,+1.我同意@AdamWenger。我可以更新我的答案,但它会准确地反映你在这里+1你不需要小组成员在你的子区这是事实,我错了。谢谢你,你不需要在你的子组里分组这是事实,我错了。谢谢你的帮助。