我有一个“词典表”称为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是“working”,然后执行插入查询,但无论如何使用连接或选择进行一次插入查询吗?

我试过像:

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"

谢谢!

有帮助吗?

解决方案

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);

其他提示

这是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加入它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top