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