2010-04-14 49 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)