在不同表上进行选择的 Oracle INSERT 语句
Oracle INSERT statement with selects on different tables
我有两个 tables table1
和 table2
。这些 table 具有独特的 name
和 id
列。
我还有一个关系/连接 table, table1_table2
有直截了当的列 table1_id
和 table2_id
.
我想做的是在 table1_table2
中插入一个新关系,知道 table1
和 table2
中元素的 name
我想创建一个的关系。但我需要让他们的 id
s 将它们插入 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
.
这应该有效:
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')
);
不过,我会写成:
插入 table1_table2(table1_id、table2_id)
SELECT t1.id, t2.id
从 table1 t1 加入
table2 t2
在 t1.name = 'some_name' 和
t2.name = 'another_name';
请注意,在这种情况下,如果 table 中都没有匹配项,则根本不会插入任何行。使用 VALUES
,将插入 NULL
个值。
我有两个 tables table1
和 table2
。这些 table 具有独特的 name
和 id
列。
我还有一个关系/连接 table, table1_table2
有直截了当的列 table1_id
和 table2_id
.
我想做的是在 table1_table2
中插入一个新关系,知道 table1
和 table2
中元素的 name
我想创建一个的关系。但我需要让他们的 id
s 将它们插入 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
.
这应该有效:
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')
);
不过,我会写成:
插入 table1_table2(table1_id、table2_id) SELECT t1.id, t2.id 从 table1 t1 加入 table2 t2 在 t1.name = 'some_name' 和 t2.name = 'another_name';
请注意,在这种情况下,如果 table 中都没有匹配项,则根本不会插入任何行。使用 VALUES
,将插入 NULL
个值。