当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。 - 错误
Posted
技术标签:
【中文标题】当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。 - 错误【英文标题】:Only one expression can be specified in the select list when the subquery is not introduced with EXISTS. - error 【发布时间】:2015-06-29 21:42:53 【问题描述】:我对第二个问题有疑问,因为我收到错误“当子查询没有与 EXISTS 一起引入时,选择列表中只能指定一个表达式。”。你能帮帮我吗?
Select P.Name, P.ProductCategoryID, PC.Name, Max(P.ListPrice) as MaxPrice
from SalesLT.Product as P
join SalesLT.ProductCategory as PC
on PC.ProductCategoryID=P.ProductCategoryID
where P.ListPrice=
(select Max(ListPrice)
from SalesLT.Product as P2
where P2.ProductCategoryID=P.ProductCategoryID)
group by P.Name, P.ProductCategoryID, PC.Name
order by MaxPrice desc;
go
with sale_cte as
(Select PC.Name, P.ProductCategoryID, P.Listprice,
ROW_NUMBER() over(partition by PC.Name order by P.Listprice) as RN
from SalesLT.Product as P
join SalesLT.ProductCategory as PC
on PC.ProductCategoryID=P.ProductCategoryID)
Select PC.Name,
(select *
from sale_cte)
from SalesLT.ProductCategory as PC
wher RN=1
【问题讨论】:
投反对票原因:阅读错误信息。 【参考方案1】:我认为错误在以下部分
Select PC.Name,
(select *
from sale_cte)
from SalesLT.ProductCategory as PC
where RN=1
这可以重写为
select * from sale_cte
wher RN=1
【讨论】:
【参考方案2】:您不需要单独列出 PC.Name,因为它是整个列列表的一部分 (*)
【讨论】:
但我想在第二个中查看产品类别名称(与第一个 quary 中的结果相同)。以上是关于当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。 - 错误的主要内容,如果未能解决你的问题,请参考以下文章
SQL - 当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式
创建函数时出错 - 如果不使用 EXISTS 引入子查询,则选择列表中只能指定一个表达式
错误:不使用EXISTS引入子查询时,选择列表中只能指定一个表达式
不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式