MySQL INSERT INTO ... 值和选择
Posted
技术标签:
【中文标题】MySQL INSERT INTO ... 值和选择【英文标题】:MySQL INSERT INTO ... VALUES and SELECT 【发布时间】:2013-03-09 13:12:33 【问题描述】:有没有办法插入预设值和我从选择查询中获得的值? 例如:
INSERT INTO table1 VALUES ("A string", 5, [int]).
我有“A string”的值和数字 5,但我必须从这样的选择中找到 [int] 值:
SELECT idTable2
FROM table2
WHERE ...
这给了我将 ID 放入 table1 中。
如何将其合并到一个语句中?
【问题讨论】:
【参考方案1】:尝试以下方法:
INSERT INTO table1
SELECT 'A string', 5, idTable2 idTable2 FROM table2 WHERE ...
【讨论】:
【参考方案2】:使用insert ... select
查询,并将已知值放入select
:
insert into table1
select 'A string', 5, idTable2
from table2
where ...
【讨论】:
我发现这种方法的一个问题是,如果SELECT
返回零记录,则语句成功但没有数据是INSERT
。
@NeilC.Obremski:是的,但如果您期望结果是别的东西,这只是一个问题。如果你想在这种情况下出错,你可以使用子查询来代替。
非常感谢,我正在网上搜索这个【参考方案3】:
只需在此处使用子查询,例如:
INSERT INTO table1 VALUES ("A string", 5, (SELECT ...)).
【讨论】:
+1 提供了如何在仍然使用VALUES
语法的同时执行此操作的示例。
此方法可能会出现“超过 1 行”这样的错误
应该是“INSERT INTO table1 VALUES ("A string", 5, (SELECT ... LIMIT 1))。”
当您只需要将一个表中的一行中的几个值复制到另一个表中的新行中时,此解决方案非常有用。【参考方案4】:
试试这个:
INSERT INTO table1 SELECT "A string", 5, idTable2 FROM table2 WHERE ...
【讨论】:
【参考方案5】:INSERT INTO table1
SELECT "A string", 5, idTable2
FROM table2
WHERE ...
见:http://dev.mysql.com/doc/refman/5.6/en/insert-select.html
【讨论】:
【参考方案6】:INSERT INTO table1 (col1, col2)
SELECT "a string", 5, TheNameOfTheFieldInTable2
FROM table2 where ...
【讨论】:
【参考方案7】:试试这个
INSERT INTO TABLE1 (COL1 , COL2,COL3) values
('A STRING' , 5 , (select idTable2 from Table2) )
where ...
【讨论】:
SELECT
表中的多个列怎么样?如果我尝试不止一列来自那里,我会得到Operand should contain 1 column(s)
。
就是这样。是的!【参考方案8】:
所有其他答案都解决了这个问题,我的答案与其他答案的工作方式相同,但只是以更具教学性的方式(这适用于 MySQL...不知道其他 SQL 服务器):
INSERT INTO table1 SET
stringColumn = 'A String',
numericColumn = 5,
selectColumn = (SELECT idTable2 FROM table2 WHERE ...);
您可以参考 MySQL 文档:INSERT Syntax
【讨论】:
【参考方案9】: 插入表名 1 (ID, 姓名, 地址, 联系电话) SELECT id、name、address、contact_number FROM table_name2;【讨论】:
【参考方案10】:INSERT INTO table1(Table2Id, KeyTypeEnumId, SortOrder, TenantId)
SELECT Id, 1, 1, TenantId
FROM table2
WHERE WebsitePageTypeEnumId = 10 AND ElementTypeEnumId = 16
【讨论】:
以上是关于MySQL INSERT INTO ... 值和选择的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 关于表复制 insert into 语法的详细介绍