INSERT INTO Test.Items
(Name, Type, Number)
SELECT 'Pork', 'Sausage', COALESCE(l.Number, 6)
FROM Lookup l
WHERE l.Type = 'Sausage'
编辑:基于下面的评论附加样本。
使用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'
使用临时表:
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
这是辉煌的,从来没有见过COALESCE命令要么,很不错! –
如果我想要多个查找表表示另一个值,我将如何构造它?因此,另一个表Lookup2例如我(使用这个例子)查找名称 –
@Lee:有几种方法。您可以将SELECT语句与UNION ALL运算符串联在一起,或者,如果您有足够多的要插入的值,则可能需要使用所有值填充临时表,然后针对查找进行JOIN。我会为你提供每个样品。 –