2017-09-14 89 views
0

我想通過做視圖聯合插入數據到臨時表中,但我得到以下error.What可能是它的原因。當我做正常選擇查詢運行良好。使用視圖聯合導致問題插入到表

由於此查詢中定義了提示 ,查詢處理器無法生成查詢計劃。重新提交查詢,但不指定任何提示 並且不使用SET FORCEPLAN。

insert into #temp 
SELECT 'aaa', COUNT(*) FROM view1 
UNION 
SELECT 'bbb', COUNT(*) FROM view2 
UNION 
SELECT 'ccc', COUNT(*) FROM view3 
UNION 
SELECT 'ddd', COUNT(*) FROM view4 
UNION 
SELECT 'eee', COUNT(*) FROM view5 
UNION 
SELECT 'fff', COUNT(*) FROM view6 
UNION 
SELECT 'ggg', COUNT(*) FROM view7 
UNION 
SELECT 'hhh', COUNT(*) FROM view8 
+1

您正在使用哪個數據庫管理系統?順便說一句,我會在這裏做'聯盟所有',因爲沒有重複刪除。 – jarlh

+0

Microsoft SQL Server ..使用UNION ALL將解決此問題? – RAJ

+0

UNION ALL是一般性建議。該錯誤消息明確指出「_Resubmit查詢,但沒有指定任何提示,也沒有使用SET FORCEPLAN._」 – jarlh

回答

1

你寫什麼應該工作。檢查2件事。由於它是一個臨時表,請檢查從視圖聯合中刪除任何視圖是否修復它。然後,單獨檢查該視圖。腳本所有的意見,並檢查是否有任何使用提示像NOLOCK,EXPAND等,哪一個是導致問題。

此外,您還可以嘗試像寫這本

insert into #temp 
SELECT field, total FROM 
(SELECT 'aaa' field, COUNT(*) total FROM view1 
UNION 
SELECT 'bbb', COUNT(*) FROM view2 
UNION 
SELECT 'ccc', COUNT(*) FROM view3 
UNION 
SELECT 'ddd', COUNT(*) FROM view4 
UNION 
SELECT 'eee', COUNT(*) FROM view5 
UNION 
SELECT 'fff', COUNT(*) FROM view6 
UNION 
SELECT 'ggg', COUNT(*) FROM view7 
UNION 
SELECT 'hhh', COUNT(*) FROM view8) Z