我创建了一个表:
create table table1
(
ID NOT NULL,
NAME VARCHAR2(20) NOT NULL,
dist1 NUMBER(5,3),
dist2 NUMBER(5,3),
dist3 NUMBER(5,3)
);
表2:
select id, name from table
数据:
ID(pk) | name(pk)
-------------------
86 name1
86 name2
86 name3
以下是我尝试的查询。
INSERT INTO table1(ID, NAME, DIST1, DIST2, DIST3)
SELECT distinct customer_ref, plan_name
FROM table2
代表DIST1
,DIST2
,DIST3
- 以下值需要与table1
和ID
一起插入name
name1 0.8 0.2 0
name2 1.1 1.2 3.4
name3 4.5 4.2 5.2
任何人都可以帮我了解如何将值插入table1
。
答案 0 :(得分:2)
作为SQL Server,如果您正在使用MYSQL,则根据需要转换数据类型
创建临时表以存储数据
Create table #Temptbl
(
NAME VARCHAR(20) NOT NULL,
dist1 decimal(5,3),
dist2 decimal(5,3),
dist3 decimal(5,3)
)
insert into #Temptbl values('name1', 0.8 , 0.2, 0)
insert into #Temptbl values('name2', 1.1, 1.2, 3.4)
insert into #Temptbl values('name3', 4.5, 4.2, 5.2 )
现在,加入临时表和[table]
以获取数据,并插入table1
INSERT INTO table1(ID, NAME, DIST1, DIST2, DIST3)
select [table].ID,[table].NAME,#Temptbl.dist1,#Temptbl.dist2,#Temptbl.dist3
from [table] INNER JOIN #Temptbl ON [table].NAME = #Temptbl.NAME
现在,执行select * from [table1]
,您可以获得所需的结果
ID NAME dist1 dist2 dist3
86 name1 0.800 0.200 0.000
86 name2 1.100 1.200 3.400
86 name3 4.500 4.200 5.200
答案 1 :(得分:0)
你可以使用这样的case语句:
CASE name
WHEN 'john' THEN 0.8
WHEN 'mike' THEN 1.1
WHEN 'steve' THEN 4.5
END AS dist1
见这里:http://sqlfiddle.com/#!9/4f267/1
根据您拥有的名称数量,这可能非常麻烦。如果您在电子表格中有一个名单列表,那么最好将数据导入表格然后进行连接。您可以使用类似MySQL' DATA INFILE'如果这是一次性的事情,你可以自动进行导入,也可以只使用工作台。