2011-02-27 75 views
2

我不知道我是否正确表述了它,但我会尽力解释我想要的内容。基于从另一个表中提取的数据的SQL质量插入

Table 1 - X 
id | name | blah 

Table 2 - Y 
id | Xid | configKey | ConfigVal 

我想要做的是,创建表2中的一行在表1中,其中从表1中对应的ID会在列的Xid在表2中的一切,我从Java的背景是和不太喜欢sql,所以不太确定如何做到这一点。表1中有很多行,这就是为什么我想将其编出来的原因。

我非常想要做这样的事情:

Table1 (the object table) 
1 test1 a 
2 test3 b 
3 testn n 

运行查询得到填充这个

Table 2 (the config table) 
...exisitng rows 
59 1 doSomething true 
60 2 doSomething true 
61 3 doSomething true 

所以,我非常想在配置添加一行(所有相同的值)除了它对应的id(表2中的第2列应该是表1中的第1列)

谢谢

+0

价值发生的事情什么DBMS? – Nishant 2011-02-27 06:08:34

+0

我更新了它的更多信息,DBMS是mySql – Th3sandm4n 2011-02-27 06:58:33

回答

4

要使用固定的值 'DoSomething的' 和 '真实' 的所有插入的记录:

insert into table2 (Xid, configKey, ConfigVal) 
select id, 'doSomething', 'true' 
from table1 
3

使用Select Into链接为SQL Server语法,语法因服务器而异,但格式通常非常接近。

SQL服务器

select id as Xid, value as name, 'other value' as blah INTO TABLE1 from TABLE2 

我的SQL

INSERT INTO table1 (id, name,other_value) 
SELECT xid, value, 'another value' as other_value from TABLE2 

这里是一个SQL Tutorial走您完成整个过程。

+0

我正在使用mysql,这是我有: – Th3sandm4n 2011-02-27 06:32:32

+0

我试过第二个,但事情是我想在其他值添加到(这都是一样的在整个插入的行中)不应该从另一个表中复制。我详细说明了我在问题中的含义 – Th3sandm4n 2011-02-27 06:41:40

+0

只是将它们别名...'a'作为 – Nix 2011-02-27 14:02:17

0

我想这可能工作

Insert into table2(xid, value) 
select id, name from table1. 

但你必须在表2 Id列作为一个标识或必须给它一个默认值。 (这仅适用于SQL Server中,虽然)。

相关问题