我有一个查询提交表a
中的多个项目。
例如:
insert into a values(id,name) (5,'john'),(6,'smith');
虽然我还需要使用此id从其他表中选择一些第三个值。
例如:
insert into a values(id,name,money) (5,'john',(select money from b where id=5)),(6,'smith',(select money from b where id=6));
上面的问题是它有点重复,也使用子选择。
我想知道是否可以使用JOIN
重写此内容(这也应该保证 与该给定id上的表b的关系,以免它插入NULL)
有什么想法吗?
答案 0 :(得分:4)
每个SELECT
只允许一个INSERT
,因此您需要重新编写此选项以选择多行,而不是一次插入多个值。你能创建一个包含两组值的临时表吗?INSERT
那些JOIN
?
CREATE TEMPORARY TABLE _tmp_a (id INT PRIMARY KEY, name VARCHAR(255));
INSERT INTO _tmp_a (5, 'john'), (6, 'smith')
INSERT INTO a (id, name, money) SELECT _tmp_a.id, _tmp_a.name, b.money FROM _tmp_a LEFT JOIN b ON b.id=_tmp_a.id