MS Access如何将此选择查询转换为删除查询?

时间:2009-09-30 07:57:36

标签: ms-access

我有以下选择查询

SELECT t1.*
FROM t1, t2
WHERE t1.field1=t2.field1 And t1.field2=t2.field2 And t1.field3=t2.field3 ;

我想将其转换为删除查询。我该怎么写呢?

5 个答案:

答案 0 :(得分:2)

这个查询怎么样:

DELETE FROM t1
WHERE t1.field1 IN (
  SELECT t1.field1 FROM t1, t2  
  WHERE t1.field1=t2.field1 And
        t1.field2=t2.field2 And
        t1.field3=t2.field3)

答案 1 :(得分:1)

访问时不是100%,但确实:

DELETE t1
FROM t1, t2
WHERE t1.field1=t2.field1 And t1.field2=t2.field2 And t1.field3=t2.field3 ;

工作?

答案 2 :(得分:1)

试试这个

DELETE FROM t1
FROM t1 AS tt1, t2 AS tt2
WHERE tt1.field1=tt2.field1 And tt1.field2=tt2.field2 And tt1.field3=tt2.field3 ;

编辑:

在MS Access中进行了此操作

DELETE DISTINCTROW t1.*
    FROM t1 INNER JOIN t2 ON (t1.field3 = t2.field3) AND (t1.field2 = t2.field2) AND (t1.field1 = t2.field1);

它有效,您必须将唯一记录设置为是

答案 3 :(得分:0)

这个怎么样:

DELETE 
FROM t1
INNER JOIN t2 ON t1.field1=t2.field1 
  And t1.field2=t2.field2 
  And t1.field3=t2.field3

将删除t1中基于三个字段值在t2中具有匹配记录的所有记录。

答案 4 :(得分:0)

我一直在努力做类似的事情。

我发现最简单的方法是根本不使用查询,而是创建一个空的重复表,其中包含多个具有重复项的主键确定(设计视图按住Ctrl键并选择所需的行,然后右键单击并将它们全部选为主键。

然后将表中的所有行复制并粘贴到新表中。确定错误消息,您会发现在您想要的字段中只有一个只有唯一值的表。

这样做的另一个好处是不允许在新表中使用重复的行。