【发布时间】:2021-06-19 05:36:31
【问题描述】:
我正在尝试使用 Text1 列中的“是”值更新具有最高分数的行。
这很简单,除非有多行具有最高分数。
如果他们的分数相同,我只想选择顶行以具有值“是”。只有具有相同供应商 ID 的一行应具有“是”值。
UPDATE Suppliers
SET Text1='Yes'
--SELECT DISTINCT *
FROM Suppliers INNER JOIN
(
SELECT Vendor, MAX(VCScore) as MaxVCScore
FROM Suppliers
GROUP BY Vendor
) maxTable
ON Suppliers.Vendor=maxTable.Vendor
AND Suppliers.VCScore=maxTable.MaxVCScore
我不想使用 TOP 1,因为这只会更新整个表中的一行。相反,我希望每个供应商只更新一行。 (供应商可以是相同的,这是我要解决的问题。)我无法在 Update 语句中添加 Group By 子句,因为我想按供应商分组,但这是不正确的语法。
【问题讨论】:
标签: sql sql-server