我有两张表table1
和table2
。这些表格具有唯一的name
和id
列。
我还有一个关系/联接表,table1_table2
,其中包含直接的列table1_id
和table2_id
。
我想要做的是在table1_table2
中name
知道table1
中元素的table2
和id
我希望创建一个关系。但我需要让table_table2
将它们插入insert into table1_table2 values ((select id from table1 where name = 'some_name'), (select id from table2 where name = 'another_name'))
。
我想要的是这样的:
insert into table1_table2 values ((select id from (select id from table1 where name = 'some_name') where rownum=1), (select id from (select id from table2 where name = 'another_name') where rownum=1))
我也尝试过使用
id
也没用。
据我所知,如果有必要,我可以先提取insert into table1_table2 values (select t1.id, t2.id from table1 t1, table2 t2 where t1.name = 'some_name' and t2.name = 'another_name')
,但我更愿意将其作为一个声明。
编辑:我也试过
table1
id name
1 foo
2 bar
table2
id name
1 some
2 data
table1_table2
table1.id table2.id
1 1
也没有用
示例数据:
table1.id table2.id
2 2
现在我要插入
table1_table2
进入table1
,但我只知道name
中的条目包含bar
table2
,而name
中的条目具有data
}} write.csv(df, "mydf.csv", row.names=FALSE, na="")
。
答案 0 :(得分:1)
这应该有效:
INSERT INTO table1_table2 (table1_id, table2_id)
VALUES ( (SELECT id FROM table1 WHERE name = 'some_name'),
(SELECT id FROM table2 WHERE name = 'another_name')
);
但是,我会把它写成:
INSERT INTO table1_table2(table1_id,table2_id) SELECT t1.id,t2.id FROM table1 t1 JOIN table2 t2 ON t1.name ='some_name'AND t2.name ='another_name';
请注意,在这种情况下,如果两个表中都没有匹配项,则根本不会插入任何行。使用VALUES
,将插入NULL
值。