0

我有以下视图(没有 schyrsem 的学生)来显示 SchYrSem 表中没有相关记录的记录列表:

SELECT Students.IDNo, Students.LastName, Students.FirstName
FROM Students LEFT JOIN SchYrSem ON Students.[IDNo] = SchYrSem.[IDNo]
WHERE (((SchYrSem.IDNo) Is Null));

当我删除记录时,它说:

视图或函数 'students w/o schyrsem' 不可更新,因为修改会影响多个基表。

知道如何在 SchYrSem 表中没有匹配记录的情况下从学生表中删除记录吗?

4

1 回答 1

2
DELETE s
  FROM dbo.Students AS s 
  LEFT OUTER JOIN dbo.SchYrSem AS ss
  ON ss.IDNo = s.IDNo
  WHERE ss.IDNo IS NULL;

或者

DELETE s    
  FROM dbo.Students AS s   
  WHERE NOT EXISTS   
  (
     SELECT 1
      FROM dbo.SchYrSem
      WHERE IDNo = s.IDNo   
  );

恕我直言,您不应该尝试从视图中删除一行。

于 2012-04-23T02:41:21.897 回答