我有一个名为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"
谢谢!
答案 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加入它。