UNION 查询更新 Table

UNION Query to update Table

这是我的 UNION 查询

INSERT INTO Master (Player, Won, Lost)
SELECT Player, Sum(Won), Sum(Lost) FROM (
    SELECT First([Master Data Results 2013 - 2016].[Winner]) AS Player,
    Count([Master Data Results 2013 - 2016].[Winner]) AS Won,
    0 AS Lost
    FROM [Master Data Results 2013 - 2016]
    GROUP BY [Master Data Results 2013 - 2016].[Winner]
    HAVING (((Count([Master Data Results 2013 - 2016].[Winner])) > 1))

    UNION

    SELECT First([Master Data Results 2013 - 2016].[Loser]) AS Player,
    0 as Won,
    Count([Master Data Results 2013 - 2016].[Loser]) AS Lost
    FROM [Master Data Results 2013 - 2016]
    GROUP BY [Master Data Results 2013 - 2016].[Loser]
    HAVING (((Count([Master Data Results 2013 - 2016].[Loser])) > 1))
)
GROUP BY Player

这个查询做我想做的一切,当然除了一件事。 当我的 MASTER DATA RESULTS 2013 -2016 中的记录更新为新记录时,我 运行 我的查询如上所示,我的 MASTER table 全部搞砸了。 而不是更新 table 查询只是再次添加所有具有新号码的玩家。

我如何确保查询不会向 MASTER table 添加行,而只是更新 MASTER table 中的 Won 和 Lost 字段?

我试过唯一值和更新但没有成功

您不能直接使用带有 UNION 或 GROUP BY 的查询来更新 table,这样的王者查询是不可更新的。在插入新行之前,您可以或从 Master table 中删除所有行,或者如果 Master table 包含信息,应该保持原样,只需更新来自联合查询的玩家的几行,插入此查询中的数据到临时 table,然后通过查询加入的 Master 和临时 tables.

更新 master table

通过来自 MasterTemp table 的数据更新 Master table 的查询应该是这样的:

UPDATE Master INNER JOIN MasterTemp ON Master.Player = MasterTemp.Player 
SET Master.Won = [MasterTemp].[Won], Master.Lost = [MasterTemp].[Lost];