【发布时间】:2024-04-15 12:35:02
【问题描述】:
我有这些表:
我写了以下查询:
UPDATE a
SET a.AlbumTitle = 'An updated title!'
FROM albums AS a
JOIN RecordCompanies AS r
ON a.RecordLabel = p.RCompanyId
JOIN Singer AS s
ON s.SingerId = a.Id_Author
UPDATE s
SET s.SingerName = 'Updating the author too!'
FROM albums AS a
JOIN RecordCompanies AS r
ON a.RecordLabel = p.RCompanyId
JOIN Singer AS s
ON s.SingerId = a.Id_Author
UPDATE r
SET r.RCompanyName = 'Updated RCompanyName too!'
FROM albums AS a
JOIN RecordCompanies AS r
ON a.RecordLabel = p.RCompanyId
JOIN Singer AS s
ON s.SingerId = a.Id_Author
有没有更好的方法通过使用单个查询来实现?如何改进我的查询?
【问题讨论】:
-
SQL Server 只允许您在单个
update查询中一次更新一个表。所以你仍然需要多个查询。 -
一个 DML 语句不能影响多个表,不。由于这些都是非常困难的列和表,你正在影响,那么你将需要 3
UPDATEstatements。 -
嗨@Larnu。所以我的解决方案是正确的?
-
@Gordon Linoff:我可以对 JOIN 操作的结果执行单个 UPDATE 查询吗?
-
假设您具有参照完整性,所有这些额外的
JOIN约束都是多余的。例如,第一个UPDATE只是用相同的值更新每条记录,对吗?因此,您可以通过删除所有这些连接来改进您的查询...假设您当前只是更新每条记录
标签: sql sql-server database tsql