2013-03-20 156 views
36

有沒有一種方法可以插入來自select-query的預設值和值? 例如:MySQL INSERT INTO ... VALUES和SELECT

INSERT INTO table1 VALUES ("A string", 5, [int]). 

我有「的字符串」和5號的價值,但我已經找到從選擇這樣的[INT值:

SELECT idTable2 
FROM table2 
WHERE ... 

那給我這個ID放在table1裏面。

如何合併成一個語句?

回答

62

使用insert ... select查詢,並把已知值在select

insert into table1 
select 'A string', 5, idTable2 
from table2 
where ... 
+1

我用這種方法發現的一個問題是,如果'SELECT'返回零個記錄,那麼該語句成功,但沒有數據是'INSERT'。 – 2014-02-13 01:52:18

+2

@ NeilC.Obremski:是的,但這只是一個問題,如果你期望結果是別的。如果你想在這種情況下發生錯誤,你可以使用子查詢。 – Guffa 2014-02-13 02:02:27

+0

非常感謝你,我在網上搜索這個 – ComradeJoecool 2017-10-23 16:41:04

1

嘗試以下操作:

INSERT INTO table1 
SELECT 'A string', 5, idTable2 idTable2 FROM table2 WHERE ... 
46

只使用子查詢就在那裏,如:

INSERT INTO table1 VALUES ("A string", 5, (SELECT ...)). 
+2

+1,提供了一個如何使用'VALUES'語法的例子。 – EleventyOne 2013-12-26 23:22:40

+1

這種方法可能會給出一個錯誤,比如「多於一行」 – 2014-03-20 09:10:27

+5

它應該是「INSERT INTO table1 VALUES(」A string「,5,(SELECT ... LIMIT 1))。」 – Rahnzo 2015-09-22 15:38:03

0

試試這個:

INSERT INTO table1 SELECT "A string", 5, idTable2 FROM table2 WHERE ... 
1
INSERT INTO table1 (col1, col2) 
SELECT "a string", 5, TheNameOfTheFieldInTable2 
FROM table2 where ... 
8

試試這個

INSERT INTO TABLE1 (COL1 , COL2,COL3) values 
('A STRING' , 5 , (select idTable2 from Table2)) 
where ... 
+4

「SELECT」表中的多個列怎麼樣?如果我嘗試使用多個列,我會得到'操作數應該包含1列'。 – 2014-02-13 01:54:44

5

所有其他的答案來解決這個問題,我的回答工作方式與別人一樣,只是一個更說教方式(這對MySQL工作...不知道其他SQL服務器):

INSERT INTO table1 SET 
    stringColumn = 'A String', 
    numericColumn = 5, 
    selectColumn = (SELECT idTable2 FROM table2 WHERE ...); 

您可以參考MySQL文檔:INSERT Syntax

10
 
INSERT INTO table_name1 
      (id, 
      name, 
      address, 
      contact_number) 
SELECT id, name, address, contact_number FROM table_name2;