2009-09-30 65 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鍵並選擇所需的行,然後右鍵單擊並將它們全選爲主鍵)。

然後將表中的所有行復制並粘貼到新表中。確定錯誤信息,你會發現你有一個只有你想要的字段中唯一值的表。

這還有一個好處,就是不允許在新表中存在重複的行。