【问题标题】:mySQL inserting multiple records with a selectmySQL使用选择插入多条记录
【发布时间】:2010-11-15 23:48:47
【问题描述】:

我有一个名为 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"

谢谢!

【问题讨论】:

    标签: sql select join insert


    【解决方案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);
    

    【讨论】:

    • 谢谢!你真的很聪明,超越了你的年龄。
    【解决方案2】:

    这是 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 连接起来。

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多