我在Access文件中有两个表(tblCurrentStudents和tblNewStudents)。 tblCurrentStudents是上一学年结束时的最新成员,包含去年学生及其信息的列表。 tblNewStudents包含今年学生信息的完整列表。这两个桌子都有一些共同的学生,这意味着他们去年在这里并且今年都在这里。然而,在tblCurrentStudents中,有些学生去年不在这里,但是在今年年初就读。
我现在需要做的是将学生从不再注册的tblCurrentStudents中移除,这意味着他们在去年年底离开,不会在tblNewStudents中。
我知道我可以使用Union命令将两个表连接在一起(我找到了必要的代码来执行此操作)。我不知道如何做相反的事情,意味着找到两个表中不常见的记录,并从tblCurrentStudents中删除那些记录。
有什么建议吗?是否有诸如Not Union命令之类的东西?
答案 0 :(得分:0)
假设我正确理解您的问题,您想要移除tblCurrentStudents
中不在tblNewStudents
的任何学生?
如果是这样,我认为您希望使用IN()
:
DELETE FROM tblCurrentStudents
WHERE StudentId NOT IN (
SELECT StudentID FROM tblNewStudents)
答案 1 :(得分:0)
我创建了一组模拟我想要的表格。这是我在互联网上找到的UNION代码,用于:
Private Sub Command0_Click()
Dim sql As String,sTable As String,oTD As TableDef sql =" SELECT * FROM MergeTable UNION SELECT * FROM MainTable"
如果MsgBox("在表中存储唯一记录?",vbYesNo)= vbYes然后 sTable = InputBox("哪个表名?"," tblMerged")
For Each oTD In CurrentDb.TableDefs
If oTD.Name = sTable Then sTable = sTable & "1"
Next oTD
sql = "SELECT * INTO " & sTable & " FROM (" & sql & ")"
DoCmd.RunSQL sql
结束如果
是的,这正是我所需要的。我将尝试使用IN命令。我会告诉你它是怎么回事。假设我正确理解您的问题,您想删除 来自tblCurrentStudents的学生谁不在tblNewStudents?