Sql 连接字段

Sql 连接字段,sql,ms-access,sql-delete,Sql,Ms Access,Sql Delete,这是一个MS Access(2010)脚本 我正在尝试将一个表的两个字段连接为两个表。然后,如果两个表中的连接字段相等(意味着这是重复的),我想删除其中一个表中的关联记录 我知道如何在VBA中通过循环记录来实现这一点,但我想在SQL中实现这一点,因为表可能会很快包含50000条以上的记录,这意味着循环将进行2500000000次 我想我可以创建一个2 SELECT语句,以便为两个表创建连接字段。SELECT语句还将显示基础表的ID。然后,我将使用ID删除相应表中的记录 以下是我的选择声明: SE

这是一个MS Access(2010)脚本

我正在尝试将一个表的两个字段连接为两个表。然后,如果两个表中的连接字段相等(意味着这是重复的),我想删除其中一个表中的关联记录

我知道如何在VBA中通过循环记录来实现这一点,但我想在SQL中实现这一点,因为表可能会很快包含50000条以上的记录,这意味着循环将进行2500000000次

我想我可以创建一个2 SELECT语句,以便为两个表创建连接字段。SELECT语句还将显示基础表的ID。然后,我将使用ID删除相应表中的记录

以下是我的选择声明:

SELECT [Tick] & [Div_ex_date] AS Expr2, tblBbgDivData.ID
FROM tblBbgDivData
GROUP BY [Tick] & [Div_ex_date], tblBbgDivData.ID;

这是我的删除声明:

DELETE tblArchiveBbgDivData.*
FROM (tblArchiveBbgDivData 
INNER JOIN qselUniqueID_Archive ON tblArchiveBbgDivData.ID = qselUniqueID_Archive.ID) 
INNER JOIN qselUniqueID_BbgDiv ON qselUniqueID_Archive.Expr1 = qselUniqueID_BbgDiv.Expr2
WHERE (((tblArchiveBbgDivData.ID)=[qselUniqueID_Archive].[ID]) 
  AND ((qselUniqueID_Archive.Expr1)=[qselUniqueID_BbgDiv].[Expr2]));

当我点击“数据表”视图时,会显示相关记录,但当我点击“运行”时,会得到“无法从指定表中删除”。知道如何更改吗?

Access在
DELETE
语句中与
JOIN
s不兼容。您最好在中输入一个

DELETE tblArchiveBbgDivData.*
FROM (tblArchiveBbgDivData 
WHERE tblArchiveBbgDivData.ID IN 
   (SELECT qselUniqueID_Archive.ID 
    FROM qselUniqueID_Archive ) 
    INNER JOIN qselUniqueID_BbgDiv 
        ON qselUniqueID_Archive.Expr1 = qselUniqueID_BbgDiv.Expr2
   );
请注意,
WHERE
是多余的,因为在
JOIN
语法中使用了相同的表达式

DELETE tblArchiveBbgDivData.*
FROM (tblArchiveBbgDivData 
WHERE tblArchiveBbgDivData.ID IN 
   (SELECT qselUniqueID_Archive.ID 
    FROM qselUniqueID_Archive ) 
    INNER JOIN qselUniqueID_BbgDiv 
        ON qselUniqueID_Archive.Expr1 = qselUniqueID_BbgDiv.Expr2
   );