0
即時通訊使用合併做插入或刪除,我不知道該怎麼看。我有一個映射表,將分類法映射到受支持的語言。該表的樣子:SQL服務器合併使用過濾器刪除
TaxonomyLanguageID(PK) | TaxonomyID(FK) | LanguageID(FK)
我想要做的是合併的臨時表上面的表,其中臨時表將有支持的語言分類法的列表。例如:
TaxonomyID|LanguageID
456, 2
456, 3
456, 9
我已經試過像這樣(的選擇是進行測試,以後這將是一個臨時表):
MERGE dbo.TaxonomyLanguages as t
using (SELECT 5395 as TaxonomyID, 2 as LanguageID) as s
ON (s.TaxonomyID=T.TaxonomyID AND s.LanguageID=t.LanguageID)
WHEN NOT MATCHED BY TARGET THEN
INSERT(TaxonomyID,LanguageID) VALUES(S.TaxonomyID,s.LanguageID)
WHEN NOT MATCHED BY SOURCE AND T.TaxonomyID=s.TaxonomyID
THEN DELETE;
我想這個做的是插入,如果它不匹配,如果不匹配則刪除,但只刪除目標中與源中找到的taxonomyID匹配的那些行。
但是,我得到一個「只有目標列允許在'不匹配的源'子句'錯誤。
關於如何解決這個問題(或者應該如何完成)的想法?
我在找什麼樣的例子。如果我有一個源像
TaxonomyID|LanguageID
4000, 2
4000, 3
像一個目標:
TaxonomyLanguageID|TaxonomyID|LanguageID
1, 3000 2
2, 4000 1
3, 4000 2
最終的結果將是:
TaxonomyLanguageID|TaxonomyID|LanguageID
1, 3000 2
3, 4000 2
4, 4000 3
我可以有我的問題很少,但是這只是刪除所有其他行。我只想刪除與源中的TaxonomyID匹配的行,但不匹配languageID。我用一個例子更新我的問題 – 2014-10-01 14:07:34
好的。然後使用MATCHED和過濾器。 – 2014-10-01 14:14:54
MERGE dbo.TaxonomyLanguages爲t 使用(選擇456作爲TaxonomyID,3爲LanguageID)爲S ON(s.TaxonomyID = T.TaxonomyID) WHEN MATCHED 和(s.LanguageID <> T.LanguageID) 然後刪除; – 2014-10-01 14:15:18