C# 我想插入尚未插入的记录

C# 我想插入尚未插入的记录,c#,sql,sql-server,C#,Sql,Sql Server,如果WeekdayID始终为1且DepartmentId=8且ClassTiming=1则不插入记录,而是搜索表中的所有行 INSERT INTO Timetable values ('E-465458',1,1,8,10,11) SELECT StaffID, ClassTimingId,WeekDayId,DepartmentId,ClassID,SectionID FROM TimeTable WHERE EXISTS (SELECT * FROM Timetabl

如果
WeekdayID
始终为1且
DepartmentId=8
ClassTiming=1
则不插入记录,而是搜索表中的所有行

INSERT INTO Timetable values ('E-465458',1,1,8,10,11) 
SELECT StaffID, ClassTimingId,WeekDayId,DepartmentId,ClassID,SectionID
FROM TimeTable
WHERE  EXISTS (SELECT *
          FROM Timetable
          WHERE WeekDayId = 1 AND DepartmentId = 8  and ClassTiminng = 1  ) ;

同意irshad,您可以尝试以下方法来优化查询:

IF NOT EXISTS (
        SELECT *
        FROM Timetable
        WHERE WeekDayId = 1
            AND DepartmentId = 8
            AND ClassTiming = 1
    )
BEGIN
    INSERT INTO Timetable (StaffID, ClassTimingId, WeekDayId, DepartmentId, ClassID, SectionID)
    VALUES ('E-465458', 1, 1, 8, 10, 11)
END

不能同时执行
选择

IF NOT EXISTS (SELECT 1
                  FROM Timetable
                  WHERE WeekDayId = 1 AND DepartmentId = 8  and ClassTiming = 1 )
   BEGIN
       INSERT INTO Timetable (StaffID, ClassTimingId,WeekDayId,DepartmentId,ClassID,SectionID) VALUES ('E-465458',1,1,8,10,11) 
   END
或者最好切换到合并:

INSERT INTO Timetable  
SELECT 'E-465458',1,1,8,10,11
WHERE NOT EXISTS (SELECT *
          FROM Timetable
          WHERE WeekDayId = 1 AND DepartmentId = 8  and ClassTiminng = 1  ) ;

它不应该是不存在的吗?你有什么问题?也许真的只是“不”的缺失。它在“不存在”中不起作用。我也尝试过,这项任务更适合合并。。。
MERGE INTO Timetable AS tgt 
USING VALUES ('E-465458',1,1,8,10,11) AS src (StaffID, ClassTimingId,WeekDayId,DepartmentId,ClassID,SectionID)
  ON tgt.WeekDayId     = src.WeekDayId
 AND tgt.DepartmentId  = src.DepartmentId
 AND tgt.ClassTimingId = src.ClassTimingId
WHEN NOT MATCHED
THEN INSERT (src.StaffID, src.ClassTimingId,src.WeekDayId,src.DepartmentId,src.ClassID,src.SectionID)