2010-11-03 59 views
3

这个查询可以用变量写出来吗?这个查询可以用变量写出来吗?

基本上我需要的是从某个表插入一条新记录的某些东西的ID。现在我通过将该ID存储在变量中然后使用它来做到这一点。

DECLARE @store_num char(4); 
SELECT @store_num = [store_no] FROM store WHERE (store_name = 'Rocky Mountain Produce'); 
INSERT INTO [ITD640_B].[dbo].[employee] 
      ([employee_no] 
      ,[employee_fname] 
      ,[employee_lname] 
      ,[store_no]) 
    VALUES 
      (123456 
      ,'YourFirstName' 
      ,'YourLastName' 
      ,@store_num); 
+1

请不要使用 “[” 和 “]”,除非它们是必要的(在上面的代码中,它们是不必要的),他们使代码很痛苦阅读!这将大大帮助穷人保持你的代码5年后! – 2010-11-03 22:00:19

+0

@KM:这些不是由我'SQL Server Manager Studio'生成的。但感谢您的帮助提示。我会记住这一点。 – claws 2010-11-03 22:58:55

回答

5
INSERT INTO [ITD640_B].[dbo].[employee] 
    ([employee_no] 
    ,[employee_fname] 
    ,[employee_lname] 
    ,[store_no]) 
SELECT 
    123456 
    ,'YourFirstName' 
    ,'YourLastName' 
    ,[store_no] 
FROM 
    store 
WHERE 
    store_name = 'Rocky Mountain Produce'; 
+0

+1:击败我51秒。但是WHERE中的括号是不必要的。 – 2010-11-03 21:12:21

+0

小细节:在'YourLastName'和[store_no]之间缺少逗号 – 2010-11-03 21:13:10

0
INSERT INTO [ITD640_B].[dbo].[employee] 
      ([employee_no] 
      ,[employee_fname] 
      ,[employee_lname] 
      ,[store_no]) 
    SELECT 
      123456 
      ,'YourFirstName' 
      ,'YourLastName' 
      ,[store_no] 
     FROM store 
     WHERE store_name = 'Rocky Mountain Produce' 
0

使用子查询的另一种方法:

INSERT INTO [ITD640_B].[dbo].[employee] 
      ([employee_no] 
      ,[employee_fname] 
      ,[employee_lname] 
      ,[store_no]) 
    VALUES 
      (123456 
      ,'YourFirstName' 
      ,'YourLastName' 
      ,(SELECT [store_no] FROM store WHERE (store_name = 'Rocky Mountain Produce'))) 
相关问题