4

我有一个查询提交表中的多个项目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)。

有任何想法吗?

4

1 回答 1

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
于 2012-09-07T00:46:16.803 回答