具有子查询搜索条件的SQL更新查询
我有一个家庭作业问题,如果dbo模式中的类别产品的平均单价超过30美元,我们需要编写一个UPDATE语句,通过删除其最后两个字符来更改Ass7中类别的类别名称。 Ass7是一个由数据库组成的模式,其中包含相关的表、类别和产品。Categories表有Categories Name,Products表有单价,每个产品都有Categories ID具有子查询搜索条件的SQL更新查询,sql,Sql,我有一个家庭作业问题,如果dbo模式中的类别产品的平均单价超过30美元,我们需要编写一个UPDATE语句,通过删除其最后两个字符来更改Ass7中类别的类别名称。 Ass7是一个由数据库组成的模式,其中包含相关的表、类别和产品。Categories表有Categories Name,Products表有单价,每个产品都有Categories ID UPDATE Ass7.Categories SET CategoryName = LEFT(CategoryName, (LEN(CategoryNa
UPDATE Ass7.Categories
SET CategoryName = LEFT(CategoryName, (LEN(CategoryName) - 2))
WHERE EXISTS (
SELECT CategoryID
,AVG(UnitPrice) AS average
FROM Ass7.Categories
INNER JOIN dbo.Products ON Ass7.Categories.CategoryID = dbo.Products.CategoryID
WHERE average > 30
GROUP BY Ass7.Categories.CategoryID
);
但是我很困惑,不知道该去哪里。我认为你把问题复杂化了。您只需要一个子查询,返回avgunit_price>30的产品的类别id,如下所示
UPDATE Ass7.Categories
SET CategoryName = LEFT(CategoryName, (LEN(CategoryName) - 2))
WHERE CategoryID IN(
SELECT p.CategoryID
FROM dbo.Products p
GROUP BY p.CategoryID
having AVG(p.UnitPrice) > 30
);
我开始认为我可能需要使用HAVING子句,而不是像我现在这样使用子查询,但我不太确定如何继续。你能用HAVING复制你的问题吗?如果可以,请编辑您的问题并将链接添加到您的问题标记您正在使用的dbms。您使用的是哪种产品?博士后?神谕SQL只是一种查询语言,而不是特定数据库产品的名称。