mySQL使用select插入多个记录

时间:2009-08-01 03:50:43

标签: sql select join insert

我有一个名为car_status的“词典表”,其中包含“id”列和“status”列。

car_status
id     status
1      broken
2      fixed
3      working
4      fast
5      slow

我有一个名为cars的表,其列为:id,type,status_id

cars
id    type    status_id
1     jeep     1
2     ford     3
3     acura    4

我希望将多个记录插入汽车,并将所有状态与“工作”相关联。什么是最好/最简单的方法?我知道我可以查询并查找“正在工作”的status_id,然后执行插入查询,但无论如何使用连接或选择进行一次插入查询吗?

我试过像:

INSERT INTO cars (type, status_id) 
VALUES 
('GM',status_id),
('Toyota',status_id),
('Honda',status_id) 
SELECT id as status_id 
FROM car_status 
WHERE status = "working"

谢谢!

2 个答案:

答案 0 :(得分:1)

DECLARE temp_status_id INT;
SELECT status_id 
   INTO temp_status_id 
   FROM car_status;
INSERT INTO cars (type, status_id) 
    VALUES ('GM',temp_status_id),
           ('Toyota',temp_status_id),
           ('Honda',temp_status_id);

答案 1 :(得分:0)

这是MS SQL,但我认为你可以这样做:

DECLARE @status_id int
SELECT @status_id = status_id FROM car_status WHERE status = 'working'

INSERT INTO cars (type, status_id)
SELECT 'GM', @status_id
UNION
SELECT 'Toyota', @status_id
UNION...

您是否有理由在一个声明中执行此操作?就个人而言,我只是为每一行写一个插入语句。我猜你也可以用所有新类型创建一个临时表,然后用状态ID加入它。