2012-12-20 60 views
0

換句話說,我可以這樣說:是否有可能創建一個沒有行的派生表?

MERGE MyTable AS trg 
USING (VALUES(1, 'a')) AS src(key, val) 
ON ... 

我希望能夠太這樣說:

-- does not work: 
MERGE MyTable AS trg 
USING() AS SRC(key, val) 
ON ... 

有沒有辦法做到這一點?我似乎無法在MERGE,FROM等文檔中的切線引用之外找到有關派生表(Sql Server 2008R2)的許多官方文檔。

+2

這會是什麼好處?如果你沒有合併的源數據....那麼爲什麼要合併? –

+0

MERGE語句在代碼中生成。如果源數據爲空,則語句將刪除目標表中的行。 (例如...如果不匹配,則按源刪除...) –

+1

'USING(SELECT 1 as'key',1 as'val'where 1 = 0)AS src(key,val)'應該這樣做,但是我不確定它會如何幫助你。 – Pondlife

回答

1

是的,通過使用無法返回任何行的查詢作爲派生表:

USING (SELECT 1 as 'key', 1 as 'val' where 1 = 0) AS src (key, val) 
+0

謝謝。稍微簡單一點:USING(SELECT NULL,NULL,1 = 2)AS SRC(key,val) –

+0

@ChrisHerring是的,這對你的特定情況是完美的;如果任何人需要一個帶有列名的空派生表,那麼他們可以像我一樣指定名稱。 – Pondlife

相關問題