oracle和mysql多表刪除數據的方法一大把,好多都是沒通過證明的,你極可能已經被錯誤信息誤導了,下面我以mysql兩張表刪除數據爲例,來讓給爲注意到這一點,我在mysql中新建了兩張表,分別是用戶表和國家表,以下所示。html
用戶表users:mysql
國家表country,如圖:web
當你看到這兩張mysql表的時候,你必定認爲多表數據刪除的語句是這樣的,其實這樣是錯誤的!,以下。sql
delete from users u,country c where u.id = c.userId and u.id = 20
mysql多表刪除用上面的語句會報sql syntax語法錯誤的,報錯以下。數據庫
[SQL]安全
delete from users u,country c where u.id = c.userId and u.id = 20oracle
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'u,country c where u.id = c.userId and u.id = 20' at line 1spa
mysql多表刪除數據正確的方法應該使用內鏈接來刪除,以下兩條語句,可任選一句。code
//語句一 delete u,c from users u INNER JOIN country c on u.id = c.userId and u.id = 20 //語句二 delete u,c from users u INNER JOIN country c where u.id = c.userId and u.id = 10
這個時候你必定會認爲,oracle刪除多表數據可否用上面這兩條語句?答案是:不行!,它會報以下錯誤。orm
「ORA-00933:SQL命令未正確使用」
說明oracle使用上面的兩條語句多表刪除數據是不行的,那oracle多表刪除數據該怎麼寫呢?命令以下。
//oracle中只能分開執行 delete from users where users.id = 20 delete from country where country.userId = 20
在oracle中不能進行多表關聯刪除,這可能跟oracle數據庫的安全機制有關,你只能把上面的語句分紅兩條sql語句來執行才能夠實現oracle的多表刪除。