2014-02-20 90 views
0

我正在做一個SQL Server存儲過程中的選擇。這個select將結果返回給調用者,這正是我需要的,但我還需要使用存儲過程的其餘部分中的select中的一個字段。如何在SQL Server中返回並存儲select的結果?

現在,我正在做正常的選擇。然後我創建一個臨時表,然後再次執行相同的選擇,但是我將結果插入到臨時表中。有一個更好的方法嗎?

對於上下文,我基本上是從數據庫中拉出一棵樹。有許多一對多的表格,我使用的是從一個層面獲得的ID,從而提升了下一個層次。

+0

你能告訴我們你試過什麼,數據庫的內容,你的預期輸出。 –

+0

我的輸出很好。它似乎應該有一個更有效的方法,因爲我基本上每做兩次選擇。例如,有一個「大洲」表格,一個「國家」表格和一個「省份」表格。我需要撤出所有在亞洲和南美以及這些國家所有省份的國家。 每個大洲和每個國家之間都有一個唯一的ID。每個國家和每個省之間也有一個唯一的ID。 –

+0

不知道我是否完全理解(即你是否有固定的關卡數量),但是你有沒有看過CTE?下面是許多示例中的一個:http://stackoverflow.com/questions/2199942/getting-hierarchy-data-from-self-referencing-tables這可以讓您在一個查詢中將自引用表拼接在一起。它可能會也可能不會更有效率。 –

回答

1

您正在從基表中選擇數據兩次(一次用於返回用戶,一次用於插入臨時表)和一次從臨時表(使用存儲過程中的前一列)。

如果您從基表中選擇查詢很複雜,您可以做的是從基表中選擇一次數據到臨時表中,然後使用臨時表兩次(一次將數據返回給用戶,一次使用列)。

這將減少執行時間,因爲複雜查詢只執行一次,其他選擇僅限於從臨時表中進行簡單選擇。

+0

我同意Abhi – hrishi

相關問題