您可以在insert语句中以不同的方式为您的列排序值吗?

时间:2009-04-16 01:50:05

标签: sql-server

有没有办法在insert语句中命名或引导你的值? 例如

declare @temp TABLE
(
    column1 int,
    column2 int,
    column3 int
)

insert @temp(column1, column2, column3)
Select 1 as column1,3 as column3, 2 as column2

select * from @temp
当我想要第2列中的2和第3列中的3时,

将返回第2列中的3。

修改

我正在尝试编写一些动态的sql映射代码。不同的列映射到每个供应商的数据。所以我的计划是编写insert语句,从映射表中获取所有供应商列。但是,我不能确定列将以正确的顺序从映射表中出来。

3 个答案:

答案 0 :(得分:2)

插入mytable(col1,col3,col2)值(:val1,:val3,:val2)

答案 1 :(得分:1)

为什么不重命名列?也许我错过了什么?

INSERT INTO table
(column-1, column-2, ... column-n)
VALUES
(value-1, value-2, ... value-n);

允许您以相同的顺序指定列名称和匹配值。

编辑列出来的顺序恰好按照您在select子句中指定的顺序排列。我又错过了一些非常大的东西。

答案 2 :(得分:1)

  

不同的列映射到每个供应商的数据。

为每个供应商编写一个视图,将每个供应商的表映射到您的通用格式。

从每个视图或视图的并集中进行插入。