将select alias值插入列中

时间:2016-03-03 17:11:33

标签: sql sql-server select insert

不确定这是否是最好的标题,但我想在新表的int列中选择字符串值(原因是使用带有int数据类型的键而不是字符串,因此有更多列未显示在这个例子)

table1.key1   table2.key2
a                1
b                2
c                3
a                1

我可以这样做的一种方法如下,但在某些情况下语法非常长

insert into  table2 (key2)
select 1
from table1
where key1 = 'a'

insert into table2 (key2)
select 2
from table1
where key1 ='b'

等...

有人可以告诉我如何使用更短的语法吗?此外,我必须将身份插入设置为关闭,因此更新声明将无法理解。

1 个答案:

答案 0 :(得分:3)

<强> SQL Fiddle Demo

使用CASE expresion

insert into  table2 (key2)
select CASE WHEN key1 = 'a' THEN 1
            WHEN key1 = 'b' THEN 2
            WHEN key1 = 'c' THEN 3
            .....
            ELSE -1
       END as key2
from table1