我有两个表,它们之间仅引用一列。
设备(E)
key
工作(J)
key
name
isdeleted
表E需要使用具有相同J.Name的最小J.Key(其中J.Deleted = 0)进行更新。因此,在下文中,E.Key = 18将更新为12。
E
18
3
12, "This", 0
6, "This", 1
18, "This", 0
3, "That", 0
我认为我需要使用min(key)进行更新,并按删除的名称和键进行分组-0,但无法弄清楚如何将所有这些组合在一起。
答案 0 :(得分:0)
请尝试在下面的查询中更新E
表(请在执行PROD之前先进行选择,而不要进行更新,然后对其进行测试)-
update E set
E.[key] =
(select min(J1.[key]) from Job J1 where J1.name = J.name and J1.isdeleted = 0)
from Equipment E
inner join Job J on J.[key] = E.[key]
答案 1 :(得分:0)
您可以使用前一个用户发布的group by语句,但是我想我可以给您另一个选择。
$(CUST_COMBINED_BIN_FILES) is set when CUSTOM_CONFIG is defined.
e.g:make --debug CUSTOM_CONFIG=.config.csv rom.
答案 2 :(得分:0)
使用CTE获取最小值的方法略有不同:
WITH jobUpdates AS
(
SELECT [key],
MIN([key]) OVER (Partition By Name) AS MinKey
FROM jobs
WHERE IsDeleted = 0
)
UPDATE e
SET e.[Key]
FROM equipment e
INNER JOIN jobUpdates j
ON j.[key] = e.[key];