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)