我有以下INSERT语句:
INSERT INTO [StoreTestDB].[dbo].[KitItem]
([KitItemGUID]
,[KitGroupID]
,[Name]
,[Description]
,[PriceDelta]
,[WeightDelta]
,[IsDefault]
,[DisplayOrder]
,[ExtensionData]
,[TextOptionMaxLength]
,[TextOptionWidth]
,[TextOptionHeight]
,[InventoryVariantID]
,[InventoryVariantColor]
,[InventoryVariantSize]
,[CreatedOn])
VALUES
...
...
...
我需要运行另一个查询,根据名称找出KitGroupID。
以下是我大致想要做的事情:
SELECT TOP1 (KitGroupID)
FROM KitGroup
WHERE Name = "Font"
AND ProductID = 157
我有大约30个产品ID,我有很多字体。
我需要运行insert语句然后在运行时我需要select查询找出KitGroupID然后完成插入。这有意义吗?
我怎么能这样做,我对SQL很新..提前谢谢
答案 0 :(得分:5)
您可以从INSERT
声明中SELECT
,并在SELECT
中包含大量文字:
INSERT [StoreTestDB].[dbo].[KitItem]
-- all your column names
SELECT TOP 1
'Value',
23,
[KitGroupId],
'More values',
-- ...
FROM [KitGroup] WHERE ...
答案 1 :(得分:2)
你可以这样做:
INSERT INTO [StoreTestDB].[dbo].[KitItem]
([KitItemGUID]
,[KitGroupID]
,[Name]
,[Description]
,[PriceDelta]
,[WeightDelta]
,[IsDefault]
,[DisplayOrder]
,[ExtensionData]
,[TextOptionMaxLength]
,[TextOptionWidth]
,[TextOptionHeight]
,[InventoryVariantID]
,[InventoryVariantColor]
,[InventoryVariantSize]
,[CreatedOn])
SELECT
NEWID(),
(
SELECT TOP1 (KitGroupID)
FROM KitGroup
WHERE Name = "Font"
AND ProductID = 157
)
, anotherConstantValue ...
答案 2 :(得分:0)
这是我的sql:
INSERT INSERT INTO [StoreTestDB].[dbo].[KitItem]([KitGroupID],[Name],[PriceDelta],[WeightDelta],[IsDefault],[DisplayOrder],[InventoryVariantID]) VALUES (17,'<ml><locale name="en-GB">Gaudi</locale></ml>',0,0,1,1,0)
SELECT TOP (1) KitGroupID, Name, ProductID FROM KitGroup WHERE (Name = 'Fonts') AND (ProductID = 157)