2010-04-14 62 views
5

是否有可能做这样的事情:这可能与SQL?

INSERT INTO table(col1, col2) VALUES(something_from_another_table, value); 

随着something_from_another_table是一个SQL命令?就像是有什么我可以做这equivelant到:

INSERT INTO table(col1, col2) VALUES((SELECT value FROM table2 WHERE id = 3), value); 

回答

18

INSERT INTO table(col1, col2) 
SELECT value1, 'value2' FROM table2 WHERE id = 3 

其中数值1从“其他表”和值2的值是一个常数,你已经包含在SELECT语句。

5

试试这个:

INSERT INTO table(col1, col2) 
SELECT table2.value1, value2 FROM table2 WHERE table2.id = 3; 
0

你肯定可以。它应该和下面的例子类似。

INSERT INTO Store_Information (store_name, Sales, Date) 
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010) 
0

当您在插入语句中指定关键字“值”时,您试图只插入一个值。目前的办法做到这一点是指派的“something_from_another_table”的值到一个变量,然后,让你插入

DECLARE @ANYVALUE AS VARCHAR(40) 
SELECT @ANYVALUE = ANYFIELD FROM table2 WHERE id = 3 
INSERT INTO table1 (FIELD1, FIELD2) VALUES(@ANYVALUE, VALUE2) 

在这条路上总是会插入一条记录。另一种正确的方式将插入n记录作为where语句可以过滤。

INSERT INTO Store_Information (store_name, Sales, Date) 
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010)