如果存在某些东西,是否可以从参考表中获得INSERT?
说这是插入一些数据的查询...
INSERT INTO `Test`.`Items` (
`Name` ,
`Type` ,
`Number`
)
VALUES (
'Pork', 'Sausage', 6
);
Run Code Online (Sandbox Code Playgroud)
而且我有一个名为"Lookup"的查找表,其中包含两列."类型"和"数字".我想要的是,如果在这个实例中"类型香肠"的"查找"表中存在某些内容,则从查找表中提取"数字"字段,而不是在INSERT语句中插入6.

希望很清楚!
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)
| 归档时间: |
|
| 查看次数: |
12049 次 |
| 最近记录: |