如果在sql中不存在

时间:2014-12-01 07:14:47

标签: sql asp.net

我将datatable作为输入参数传递给存储过程。我为它创建了自定义类型。

这是我的存储过程:

CREATE PROCEDURE [dbo].[Proc_AddEmployee]
      @tblEmp EmpType READONLY,
      @Code int
AS
BEGIN    
      INSERT INTO Employee ([Name], [Lname], [Code])
         SELECT 
             [Name], [Lname], @Code 
         FROM @tblEmp

这里我从datatable获取记录并插入Employee表。 数据表包含Name,Lname和mobileno。 我想检查Name,Lname和mobileno的组合。如果Employee表中存在它的组合,请不要在Employee.Else中插入记录([Name],[Lname],@ Code)插入

4 个答案:

答案 0 :(得分:1)

试试这个:

CREATE PROCEDURE [dbo].[Proc_AddEmployee]
      @tblEmp EmpType READONLY,
      @Code int
AS
BEGIN    

INSERT INTO Employee ([Name], [Lname], [Code])
         SELECT 
             [Name], [Lname], @Code 
         FROM @tblEmp T
where NOT EXISTS (SELECT 
             [Name], [Lname], @Code 
         FROM Employee E where T.[Name]=E.[Name], T.[Lname]=E.[Lname] )

END

答案 1 :(得分:1)

Correlated SubQueryNOT EXISTS一起使用以查找是否存在记录

INSERT INTO Employee
            ([Name],[Lname],[Code])
SELECT [Name],[Lname],@Code
FROM   @tblEmp A
WHERE  NOT EXISTS (SELECT 1
                   FROM   Employee B
                   WHERE  B.[Name] = A.[Name]
                          AND B.[Lname] = A.[Lname]
                          AND B.[mobno] = A.[mobno]) 

答案 2 :(得分:1)

试试这个:

INSERT INTO Employee
            ([Name],
             [Lname],
             [Code])
SELECT [Name],
       [Lname],
       @Code
FROM   @tblEmp t1
WHERE  NOT EXISTS (SELECT 1
                   FROM   Employee t2
                   WHERE  t1.[Name] = t2.[Name]
                          AND t1.[Lname] = t2.[Lname]
                          AND t1.[mobileno] = t1.[mobileno]) 

答案 3 :(得分:1)

我在SQL方面不擅长,但这种方式可以正常工作

CREATE PROCEDURE [dbo].[Proc_AddEmployee]
      @tblEmp EmpType READONLY,
      @Code int
AS
BEGIN    
DECLARE
  @EMPID INTEGER

     SELECT @EMPID = ISNULL(EMPID, 0) FROM EMPLOYEE 
     WHERE NAME = @NAME AND LNAME = @LNAME AND MOBILE =@Mobile
  IF EMPID = 0 THEN
     INSERT INTO Employee ([Name], [Lname], [Code])
         SELECT 
             [Name], [Lname], @Code 
         FROM @tblEmp
  END
END