插入SQL Server 2008 R2的选择顺序
我有一个查询,在其中我创建了一个表,然后将数据插入其中。我的问题是,我有一个专栏,我需要使数据清晰,我的输出似乎工作正常,但我想澄清这是否是一个可接受的做法 以下是我的查询:插入SQL Server 2008 R2的选择顺序,sql,sql-server-2008,select,sql-server-2008-r2,insert-into,Sql,Sql Server 2008,Select,Sql Server 2008 R2,Insert Into,我有一个查询,在其中我创建了一个表,然后将数据插入其中。我的问题是,我有一个专栏,我需要使数据清晰,我的输出似乎工作正常,但我想澄清这是否是一个可接受的做法 以下是我的查询: DECLARE @T1 TABLE( MRN VARCHAR(20) , [ENCOUNTER] VARCHAR(200) , ... , ... , ... ) INSERT INTO @T1 SELECT A.Med_Rec_No , A.[VISIT ID] , ... , ... , ... ) FROM (
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
是否为我处理了排序问题,也就是说,只要我的INSERT-INTO
与我的DECLARE@T1-TABLE
相符,我在FROM
语句中选择项的顺序真的重要吗
谢谢,在执行从SELECT插入时,您必须匹配SELECT
语句中列的顺序,就像它们在插入
语句中一样
另一方面,现在您不需要将INSERT
语句中的列顺序与CREATE TABLE
中的列顺序相匹配
始终建议在INSERT
语句中指定列
。否则,您将假定所选内容与要插入的表中的列顺序匹配
在您的情况下,您应该像这样修改查询
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
, ...
, ...
, ...
)