INSERT INTO双重选择 - 如何?

时间:2016-06-17 08:13:28

标签: mysql sql

我正在尝试从两个select语句中插入两个值,例如:

INSERT INTO manytomany_relation_a_and_b_tables (a_id, b_id) VALUES 
(SELECT id FROM a_table WHERE someColumnFromA="SOMETHING"), 
(SELECT id FROM b_table WHERE someColumnFromB="SOMETHING");

显然它不起作用,但我怎样才能达到我想要的效果呢?

2 个答案:

答案 0 :(得分:3)

如果每个SELECT子查询返回恰好一个值,则可以使用INSERT INTO ... SELECT语法:

INSERT INTO manytomany_relation_a_and_b_tables (a_id, b_id) 
SELECT (SELECT id FROM a_table WHERE someColumnFromA="SOMETHING"),
       (SELECT id FROM b_table WHERE someColumnFromB="SOMETHING")

否则,您需要指定两个表连接在一起的条件,并在JOIN语句的SELECT查询中执行INSERT

答案 1 :(得分:2)

如果这两个表有任何共同点,你也可以使用join。

INSERT INTO manytomany_relation_a_and_b_tables (a_id, b_id) 
VALUES 
select t1.id,t2.id
from a_table t1
join
b_table t2
on t1.something=t2.something
and t1.somecolumna='something' and t2.somecolumna='something'