2009-09-30 56 views

回答

0

什么这个:

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

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

1

不是100%的进入,但用户:

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

工作?

+0

no this does not work – tksy 2009-09-30 08:02:40

+0

FROM子句对于Jet/SQL DELETE语句无效。 – 2009-10-02 02:31:07

+0

@ david-thank you – 2009-10-02 02:37:30

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); 

完成这一任务,它的工作,您必须将唯一的记录设置为Yes

+0

from子句中的语法错误(第二行) – tksy 2009-09-30 08:08:47

+0

第一个示例中的“DELETE FROM t1”不应该是“DELETE FROM tt1”吗?别名的目的是什么使表名更长? – 2009-10-02 02:32:11

+0

第二个答案是正确的,我离开了第一个,但可以删除它 – 2009-10-02 05:28:13

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) 
0

我一直在挣扎类似的东西。

我发现最简单的方法不是使用查询,而是使用多个主键创建一个空的重复表,并设置好重复项(设计视图按住Ctrl键并选择所需的行,然后右键单击并将它们全选为主键)。

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

这还有一个好处,就是不允许在新表中存在重复的行。