2016-11-22 241 views
4

我有兩個表刪除記錄在一個查詢SQL

EMPGROUP_TBL 
SEQID | MASTERID | BUSINESS_UNIT | DIVISION | SUB_DIVISION | CLASSIFICATION | SUB_CLASSIFICATION 

EMP_MASTERTBL 
MASTERID | EMPNO | LASTNAME | FIRSTNAME | JOBTITLE | LOCATION | 

在我的ASP.NET JOBTITLE表,BUSINESS_UNIT,分裂,SUB_DIVISION,分類和SUB_CLASSIFICATION是一起。

所以,當我要刪除的記錄在girdview我只需要刪除EMPGROUP_TBL在EMP_MASTERTBL的JOBTITLE和所有的記錄。

這是我的代碼

DELETE em.JOBTITLE, eg.BUSINESS_UNIT, eg.DIVISION, eg.SUB_DIVISION, eg.CLASIFFICATION, eg.SUB_CLASSIFICATION 
FROM EMP_MASTERTBL AS em, EMPGROUP_TBL AS eg 
WHERE em.MASTERID = eg.MASTERID AND eg.MASTERID = '76196' 

每次我運行或執行我的代碼有這Incorrect syntax near ','.

我嘗試不同的方式爲我的代碼中的錯誤,但它仍然是相同的。

我也試過這個

DELETE JOBTITLE FROM EMP_MASTERTBL WHERE MASTERID = '76196'; 
DELETE FROM EMPGROUP_TBL WHERE MASTERID = '76196' 

但我得到了一個Invalid object name 'JOBTITLE'.錯誤。

可能是什麼問題?謝謝。

+0

您必須先在主表上然後在其他表上運行兩個單獨的「刪除」查詢。 –

+1

你不能刪除查詢刪除列。您可以使用更新查詢替換值爲null,爲什麼不使用更新? –

回答

2

當您刪除你不是從某一特定領域刪除表,是要刪除的整行。這就是爲什麼當你編寫刪除語句時,你不包含字段名稱。

也可以在兩個表之間設置外鍵關係,這樣當您從EMP_MASTERTBL中刪除時,它也會刪除EMPGROUP_TB中的子記錄。 http://www.mysqltutorial.org/mysql-on-delete-cascade/

編輯

在更新的問題細讀,我覺得你真的很喜歡做的事是這樣的:

UPDATE EMP_MASTERTBL 
    SET JOBTITLE = NULL 
    WHERE MASTERID = '76196'; 

DELETE FROM EMPGROUP_TB 
    WHERE MASTERID = '76196'; 

也就是說,你設置JOBTITLE爲NULL ,並刪除EMPGROUP_TB中的所有相關記錄。

+0

但如果我使用DELETE FROM EMPGROUP_TB WHERE MASTERID = '76196';將刪除EMPGROUP_TBL中的所有記錄?包括LASTNAME等? – chobowski

+0

@chobowski整個記錄,包括所有的細節都將被刪除。看修改後的答案。如果是這樣。你想要的東西然後'刪除'不是正確的行動。 – mendosi

+0

'你不能從一個語句中的多個表中刪除'**我強烈不同意**,你當然可以。例如,對錶格進行內部或左側連接... – Codexer