我有一个名为#CSVTest_Data的表。 我希望用以下查询的结果替换该表的内容:
SELECT FirstTimeTaken,
LatestTimeTaken,
Market,
Outcome,
Odds,
NumberOfBets,
VolumeMatched,
InPlay
FROM #CSVTest_Data
EXCEPT
SELECT OddsFirstTimeTaken,
OddsLastTimeTaken,
MarketName,
Outcome,
Odds,
NumberOfBets,
VolumeMatched,
InPlay
FROM Data
如果有人能告诉我如何实现这一目标,我将不胜感激。感谢。
编辑:
我从另一个人给你的想法中找到了另一种方法。它需要创建一个新的临时表并在之后使用它,但它可以工作:
SELECT * INTO #CSVTest_Data_new FROM #CSVTest_Data WHERE 1 = 0;
INSERT INTO #CSVTest_Data_new
SELECT FirstTimeTaken, LatestTimeTaken, Market, Outcome, Odds, NumberOfBets, VolumeMatched, InPlay
FROM #CSVTest_Data -- Coming data
EXCEPT --Minus
SELECT OddsFirstTimeTaken, OddsLastTimeTaken, MarketName, Outcome, Odds, NumberOfBets, VolumeMatched, InPlay
FROM Data --Existing Data
我想我会尝试Damien的想法,因为它看起来不错,并避免额外的临时表。为什么对我的问题投票?我知道我这是一个菜鸟,但这就是为什么我需要有用的建议......
答案 0 :(得分:4)
使用基于同一个表的查询,而不是寻求替换表,只需执行DELETE
:
DELETE #CSVTest_Data
FROM #CSVTest_Data d
WHERE EXISTS( SELECT * from Data d2 WHERE
d.FirstTimeTaken = d2.OddsFirstTimeTaken AND
d.LastTimeTaken = d2.OddsLastTimeTaken AND
d.Market = d2.MarketName AND
d.Outcome = d2.Outcome AND
d.Odds = d2.Odds AND
d.NumberOfBets = d2.NumberOfBets AND
d.VolumeMatched = d2.VolumeMatched AND
d.InPlay = d2.InPlay)
答案 1 :(得分:0)
首先,表#CSVTest_Data必须与SELECT查询具有相同的列数... 然后,在查询顶部添加:
INSERT INTO #CSVTest_Data
答案 2 :(得分:0)
delete #CSVTest_Data from #CSVTest_Data A
inner join Data B on
A.FirstTimeTaken = B.OddsFirstTimeTaken and
A.LatestTimeTaken = B.OddsFirstTimeTaken and
A.Market = B.MarketName and
A.Outcome = B.Outcome and
A.Odds = B.Odds and
A.NumberOfBets = B.NumberOfBets and
A.VolumeMatched = B.VolumeMatched and
A.InPlay = B.InPlay