不确定这是否是最好的标题,但我想在新表的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'
等...
有人可以告诉我如何使用更短的语法吗?此外,我必须将身份插入设置为关闭,因此更新声明将无法理解。
答案 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