2013-06-12 67 views
1

我試圖在Access 2010上運行以下SQL代碼,但它在查詢表達式中返回語法錯誤。任何想法可能會導致它?SQL查詢表達式中的錯誤

在此先感謝。

DELETE FROM Trn_done 
WHERE (Trn_done.training = 
SELECT Training 
FROM Trainings 
WHERE (Trainings.Area = '" & Area & "')) 
+0

提到你確定了'SELECT'返回一個唯一的行? – eternay

+0

請使用參數化查詢,並停止連接「區域」在那裏......這不是你最好的做法。 – ErikE

回答

3

支架應該是嵌套的SQL前下方

DELETE FROM Trn_done 
WHERE Trn_done.training IN (
    SELECT Training 
    FROM Trainings 
    WHERE (Trainings.Area = '" & Area & "') 
) 
+0

如果'SELECT'返回多行,它將不起作用。 – eternay

+1

你是對的,我把它改爲IN – painhapp

+1

爲什麼使用IN?這可以通過一個連接完成。 –

3

您不應該等於選擇語句,以免選擇多行導致您的代碼中斷。試試這個:

DELETE td 
from Trn_done td 
inner join Trainings t 
on td.training = t.training 
WHERE t.Area = '" & Area & "' 
+2

如果您確定此'SELECT'完全返回**一行**,則可以等於'SELECT'語句。 – eternay

+1

同意。但是這對我來說就像是脆弱的代碼。 –

+0

編輯回覆。更好? –