2014-03-31 61 views
0

我有一個查詢,我在其中創建一個表,然後向其中插入數據。我的問題是,我有一列,我需要使數據不同,我的輸出似乎工作正常,但我想澄清,如果這是一個可以接受的做法。Insert into SQL Server 2008 R2的選擇順序

這裏是我的查詢看起來是這樣的:

DECLARE @T1 TABLE(
MRN VARCHAR(20) 
, [ENCOUNTER] VARCHAR(200) 
, ... 
, ... 
, ... 
) 

INSERT INTO @T1 
SELECT 
A.Med_Rec_No 
, A.[VISIT ID] 
, ... 
, ... 
, ... 
) 

FROM (
    SELECT DISTINCT PAV.PTNO_NUM AS [VISIT ID] -- MUST I CHANGE THE ORDER? 
    , PAV.Med_Rec_No       -- MUST I CHANGE THE ORDER? 
    , ... 
    , ... 
    , ... 
) 

是否INSERT INTO @T1 SELECT照顧排序對我來說,意義是否真的不管什麼才能在FROM聲明我SELECT項目只要我INSESRT INTO比賽我的DECLARE @T1 TABLE說什麼?

謝謝

回答

1

當在做SELECT聲明INSERT INTO FROM SELECTMUST列的比賽順序,因爲它們在INSERT聲明。

另一方面,您不需要將INSERT聲明中的列順序與CREATE TABLE中的順序匹配。

總是建議在INSERT聲明中指定COLUMN。否則,您會假設您選擇的內容與要插入的表中的列順序匹配。

在你的情況下,你應該像這樣修改你的查詢。

INSERT INTO @T1 (MRN, Encounter) 
SELECT 
A.Med_Rec_No 
, A.[VISIT ID] 
, ... 
, ... 
, ... 
) 

FROM (
    SELECT DISTINCT PAV.PTNO_NUM AS [VISIT ID] 
    , PAV.Med_Rec_No       
    , ... 
    , ... 
    , ... 
) 

作爲替代,你可以在INSERT條款修改列的順序

INSERT INTO @T1 (Encounter,MRN) 
SELECT 
A.[VISIT ID] 
,A.Med_Rec_No 
, ... 
, ... 
, ... 
) 

FROM (
    SELECT DISTINCT PAV.PTNO_NUM AS [VISIT ID] 
    , PAV.Med_Rec_No       
    , ... 
    , ... 
    , ... 
) 
+0

謝謝弗拉基米爾 –