插入到一组常量的SQL查询

问题描述:

似乎应该有一个这样的查询,但我想不出如何做到这一点。插入到一组常量的SQL查询

我有与由两个字段的复合主键的表,我想用数据来填充,

我可以做一个INSERT INTO从一个表,以填补了一半的钥匙,但我要填写的另一半与一组常数(0,3,5,6,9)等等

所以最终的结果是这样的

+--------------+ 
|AwesomeTable | 
+--------------+ 
| Id1 | Id2 | 
| 1  | 0 | 
| 1  | 3 | 
| 1  | 5 | 
| 1  | 6 | 
| 1  | 9 | 
| 2  | 0 | 
| 2  | 3 | 
| ... | ... | 
+--------------+ 

我有至于插入awesometable(id1,id2)选择id1,[需要一些东西]来自table1 [需要别的东西]

我有一个表2的主键

不,你不知道。一个表只能有一个主键。您可能是指复合主键。

我相信你想这样的:

INSERT 
INTO awesometable (id1, id2) 
SELECT t1.id1, q.id2 
FROM table1 t1 
CROSS JOIN 
     (
     SELECT 0 AS id2 
     UNION ALL 
     SELECT 3 
     UNION ALL 
     SELECT 5 
     UNION ALL 
     SELECT 6 
     UNION ALL 
     SELECT 9 
     ) q 

,或者Oracle

INSERT 
INTO awesometable (id1, id2) 
SELECT t1.id1, q.id2 
FROM table1 t1 
CROSS JOIN 
     (
     SELECT 0 AS id2 
     FROM dual 
     UNION ALL 
     SELECT 3 
     FROM dual 
     UNION ALL 
     SELECT 5 
     FROM dual 
     UNION ALL 
     SELECT 6 
     FROM dual 
     UNION ALL 
     SELECT 9 
     FROM dual 
     ) q 

如果我理解正确的话,也许你可以使用这样的事情:

insert into awesometable (id1, id2) 
select id1, (select top 1 id2 from table2 where /*a condition here to retreive only one result*/) 
from table1 
+0

对不起,我可能没有足够清楚,没有表2.这只是一组常量,也许你会称它为临时的能够。 – 2010-09-22 15:07:44