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];
这是我的 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];