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。我會爲你提供每個樣品。 –