我有以下选择查询
SELECT t1.*
FROM t1, t2
WHERE t1.field1=t2.field1 And t1.field2=t2.field2 And t1.field3=t2.field3 ;
我想将其转换为删除查询。我该怎么写呢?
答案 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键并选择所需的行,然后右键单击并将它们全部选为主键。
然后将表中的所有行复制并粘贴到新表中。确定错误消息,您会发现在您想要的字段中只有一个只有唯一值的表。
这样做的另一个好处是不允许在新表中使用重复的行。