使用SELECT查询INSERT查询?

时间:2011-10-28 08:28:56

标签: sql sql-server sql-server-2008 tsql

我有以下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很新..提前谢谢

3 个答案:

答案 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)