2009-10-14 44 views
5

是否可以在“插入”查询中使用“select”查询,但条件是我想为“select”使用同一个表名并且“插入”查询。
例如
mysql> insert into sample_elements (name,position,ownerel) values ('Namespace1', select id from sample_elements where name='Namespace1',0);在插入查询中使用select查询获得相同的表名

请指导我这一点。基本上

insert into sample_elements (name,position,ownerel) select 'Namespace1',id,0 from sample_elements where name='Namespace1'; 

而不是使用值仅使用select语句并插入harcoded值列

回答

16

更改插入到如下所示。你可以使用:

INSERT INTO table (..fields) SELECT ..fields.. FROM table; 
2

我认为你可以做到这一点:

0

我不知道mysql,但你可以尝试以下吗?

insert into sample_elements select name, id, 0 from sample_elements where name='Namespace1' 
0

我不确定。我认为这里面选择插入已经存在或为了什么目的。

谢谢

-1

这里是另一种使用'SET'结构工作的格式。由于字段名称与值匹配,我更喜欢这种格式的大部分SQL,因此与维护完全取决于位置的字段/值列表相比,维护要容易得多。

INSERT INTO sample_elements SET 
name = 'Namespace1', 
position = (SELECT id FROM sample_elements WHERE name='Namespace1'), 
ownere1 = 0; 
+0

-1此解决方案不适用于MySQL,OP明确使用该解决方案。看到这个答案:http://stackoverflow.com/a/14302701/998919 – fgblomqvist 2016-06-18 17:50:36

+0

它在mySQL上工作,这就是我使用它的地方。请说明它在哪里/如何不起作用,因为我认为你会发现它的实现/版本/驱动程序是问题,而不是mySQL。问候 – 2016-06-20 09:47:27

+0

我确实已经指定,检查我链接的答案。请至少说明您尝试过的MySQL数据库的版本。 – fgblomqvist 2016-06-20 15:10:02