SQL Server-选择到另一个选择中出错
我创建查询以在数据库中获取商品,如下所示SQL Server-选择到另一个选择中出错,sql,sql-server,select-query,Sql,Sql Server,Select Query,我创建查询以在数据库中获取商品,如下所示 SELECT Goods.GoodsID ,Max(Price) ExistNumber AS ExistNumber , (SELECT p.ValueText FROM STR.GoodsProperties gp INNER JOIN PRP.Properties p ON p.PropertyID = gp.PropertyID WHERE NodeText LIKE '/40/%'
SELECT
Goods.GoodsID ,Max(Price)
ExistNumber AS ExistNumber ,
(SELECT p.ValueText
FROM STR.GoodsProperties gp
INNER JOIN PRP.Properties p ON p.PropertyID = gp.PropertyID
WHERE NodeText LIKE '/40/%'
AND gp.GoodsID = Goods.GoodsID) AS Color
FROM
STR.Goods
GROUP BY
Goods.GoodsID, ExistNumber;
此查询使用商品的现有编号
和颜色属性获取商品,
现在,当我运行此查询时,出现以下错误:
Msg 512,16级,状态1,第13行子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时
导致此错误的原因是,在某些商品中有两个
颜色
,我想为该商品获取两行请检查此查询
SELECT Goods.GoodsID ,
ExistNumber AS ExistNumber ,
Prop.ValueText AS Color
FROM STR.Goods
INNER JOIN ( SELECT gp.GoodsID ,
p.ValueText
FROM STR.GoodsProperties gp
INNER JOIN PRP.Properties p ON p.PropertyID = gp.PropertyID
WHERE NodeText LIKE '/40/%'
) Prop ON Prop.GoodsID = Goods.GoodsID
GROUP BY Goods.GoodsID ,
ExistNumber ,
Prop.ValueText;
为什么在没有使用聚合函数时按分组?为什么不是一个简单的SELECT DISTINCT呢?我认为问题查询有更多包含聚合函数的列,为什么在没有使用聚合函数的情况下按分组?为什么不使用简单的SELECT DISTINCT呢?