2017-09-27 66 views
0

我有兩個相同列的表。我試圖從table1'600_LONDON_NUMBER'中刪除表2'600_LONDON_NUMBER1'中的行。下面是我的查詢,但是當我運行它時,MS Access說「無法從指定的表刪除」。請幫助我的DELETE查詢出了什麼問題

DELETE [600_LONDON_NUMBER].* 
FROM 600_LONDON_NUMBER INNER JOIN 600_LONDON_NUMBER1 
ON ([600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID) AND ([600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUST Base NO]); 

P.S.當我爲相同的查詢運行SELECT聲明時,它會在沒有任何問題的情況下恢復數據。我也檢查過數據不是readonly我可以用簡單的DELETE查詢刪除。

+0

這是MySQL數據庫? – GolezTrol

+0

'DELETE'和'FROM'之間的部分是不必要的 –

+1

在where子句中添加一個子查詢來刪除數據 – rahul

回答

1

您可以使用EXISTS來解決它

DELETE 600_LONDON_NUMBER.* FROM 600_LONDON_NUMBER 
WHERE EXISTS (
    SELECT 1 FROM 600_LONDON_NUMBER1 
    WHERE [600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID) AND 
      [600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUSTBaseNO] 
) 
+0

什麼是1代表SELECT 1? –

+0

如果'SELECT'返回至少一些東西,則'EXISTS'運算符返回true,因此標量值1就是這樣的。 –

+0

謝謝,我不得不添加正確的列名......下面的作品..'DELETE 600_LONDON_NUMBER。* FROM 600_LONDON_NUMBER WHERE EXISTS(SELECT 1 FROM 600_LONDON_NUMBER1 WHERE [600_LONDON_NUMBER] .GFCID = [600_LONDON_NUMBER1] .GFCID和 [600_LONDON_NUMBER ] .CUSTBaseNO = [600_LONDON_NUMBER1]。[CUST Base NO]);' –