有没有一种方法可以插入来自select-query的预设值和值? 例如:MySQL INSERT INTO ... VALUES和SELECT
INSERT INTO table1 VALUES ("A string", 5, [int]).
我有“的字符串”和5号的价值,但我已经找到从选择这样的[INT值:
SELECT idTable2
FROM table2
WHERE ...
那给我这个ID放在table1里面。
如何合并成一个语句?
有没有一种方法可以插入来自select-query的预设值和值? 例如:MySQL INSERT INTO ... VALUES和SELECT
INSERT INTO table1 VALUES ("A string", 5, [int]).
我有“的字符串”和5号的价值,但我已经找到从选择这样的[INT值:
SELECT idTable2
FROM table2
WHERE ...
那给我这个ID放在table1里面。
如何合并成一个语句?
使用insert ... select
查询,并把已知值在select
:
insert into table1
select 'A string', 5, idTable2
from table2
where ...
尝试以下操作:
INSERT INTO table1
SELECT 'A string', 5, idTable2 idTable2 FROM table2 WHERE ...
只使用子查询就在那里,如:
INSERT INTO table1 VALUES ("A string", 5, (SELECT ...)).
+1,提供了一个如何使用'VALUES'语法的例子。 – EleventyOne 2013-12-26 23:22:40
这种方法可能会给出一个错误,比如“多于一行” – 2014-03-20 09:10:27
它应该是“INSERT INTO table1 VALUES(”A string“,5,(SELECT ... LIMIT 1))。” – Rahnzo 2015-09-22 15:38:03
试试这个:
INSERT INTO table1 SELECT "A string", 5, idTable2 FROM table2 WHERE ...
INSERT INTO table1
SELECT "A string", 5, idTable2
FROM table2
WHERE ...
参见:http://dev.mysql.com/doc/refman/5.6/en/insert-select.html
INSERT INTO table1 (col1, col2)
SELECT "a string", 5, TheNameOfTheFieldInTable2
FROM table2 where ...
试试这个
INSERT INTO TABLE1 (COL1 , COL2,COL3) values
('A STRING' , 5 , (select idTable2 from Table2))
where ...
“SELECT”表中的多个列怎么样?如果我尝试使用多个列,我会得到'操作数应该包含1列'。 – 2014-02-13 01:54:44
所有其他的答案来解决这个问题,我的回答工作方式与别人一样,只是一个更说教方式(这对MySQL工作...不知道其他SQL服务器):
INSERT INTO table1 SET
stringColumn = 'A String',
numericColumn = 5,
selectColumn = (SELECT idTable2 FROM table2 WHERE ...);
您可以参考MySQL文档:INSERT Syntax
INSERT INTO table_name1 (id, name, address, contact_number) SELECT id, name, address, contact_number FROM table_name2;
我用这种方法发现的一个问题是,如果'SELECT'返回零个记录,那么该语句成功,但没有数据是'INSERT'。 – 2014-02-13 01:52:18
@ NeilC.Obremski:是的,但这只是一个问题,如果你期望结果是别的。如果你想在这种情况下发生错误,你可以使用子查询。 – Guffa 2014-02-13 02:02:27
非常感谢你,我在网上搜索这个 – ComradeJoecool 2017-10-23 16:41:04