从Access表中删除“旧”数据

时间:2014-05-15 13:12:11

标签: sql vba

我在Access文件中有两个表(tblCurrentStudents和tblNewStudents)。 tblCurrentStudents是上一学年结束时的最新成员,包含去年学生及其信息的列表。 tblNewStudents包含今年学生信息的完整列表。这两个桌子都有一些共同的学生,这意味着他们去年在这里并且今年都在这里。然而,在tblCurrentStudents中,有些学生去年不在这里,但是在今年年初就读。

我现在需要做的是将学生从不再注册的tblCurrentStudents中移除,这意味着他们在去年年底离开,不会在tblNewStudents中。

我知道我可以使用Union命令将两个表连接在一起(我找到了必要的代码来执行此操作)。我不知道如何做相反的事情,意味着找到两个表中不常见的记录,并从tblCurrentStudents中删除那些记录。

有什么建议吗?是否有诸如Not Union命令之类的东西?

2 个答案:

答案 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

结束如果

End Sub

  
    

假设我正确理解您的问题,您想删除     来自tblCurrentStudents的学生谁不在tblNewStudents?

  
是的,这正是我所需要的。我将尝试使用IN命令。我会告诉你它是怎么回事。

相关问题