MySQL加入与Insert结合?

Lee*_*ong 5 mysql join insert

如果存在某些东西,是否可以从参考表中获得INSERT?

说这是插入一些数据的查询...

INSERT INTO  `Test`.`Items` (
`Name` ,
`Type` ,
`Number`
)
VALUES (
'Pork',  'Sausage', 6
);
Run Code Online (Sandbox Code Playgroud)

而且我有一个名为"Lookup"的查找表,其中包含两列."类型"和"数字".我想要的是,如果在这个实例中"类型香肠"的"查找"表中存在某些内容,则从查找表中提取"数字"字段,而不是在INSERT语句中插入6.

在此输入图像描述

希望很清楚!

Joe*_*lli 7

INSERT INTO Test.Items 
    (Name, Type, Number)
    SELECT 'Pork', 'Sausage', COALESCE(l.Number, 6)
        FROM Lookup l
        WHERE l.Type = 'Sausage'
Run Code Online (Sandbox Code Playgroud)

编辑:基于以下评论的其他样本.

使用UNION ALL串插入一块:

INSERT INTO Test.Items 
    (Name, Type, Number)
    SELECT 'Pork', 'Sausage', COALESCE(l.Number, 6)
        FROM Lookup l
        WHERE l.Type = 'Sausage'
    UNION ALL
    SELECT 'Halibut', 'Fish', COALESCE(l.Number, 7)
        FROM Lookup l
        WHERE l.Type = 'Fish'
Run Code Online (Sandbox Code Playgroud)

使用临时表:

CREATE TEMPORARY TABLE tmpItems (
    Name VARCHAR(255),
    Type VARCHAR(255),
    Number INT
)

INSERT INTO tmpItems
    (Name, Type, Number)
    VALUES ('Pork', 'Sausage', 6)
INSERT INTO tmpItems
    (Name, Type, Number)
    VALUES ('Halibut', 'Fish', 7)

INSERT INTO Test.Items 
    (Name, Type, Number)
    SELECT t.Name, t.Type, COALESCE(l.Number, t.Number)
        FROM tmpItems t
            LEFT JOIN Lookup l
                ON t.Type = l.Type
Run Code Online (Sandbox Code Playgroud)