Oracle 多表聯合刪除?--轉

oracle和mysql多表刪除數據的方法一大把,好多都是沒通過證明的,你極可能已經被錯誤信息誤導了,下面我以mysql兩張表刪除數據爲例,來讓給爲注意到這一點,我在mysql中新建了兩張表,分別是用戶表和國家表,以下所示。html

用戶表users:mysql

QQ截圖20171116215656.jpg

國家表country,如圖:web

QQ截圖20171116215705.jpg

當你看到這兩張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的多表刪除。

轉自 :http://www.tpyyes.com/a/mysql_oracle/2017/1116/383.html

相關文章
相關標籤/搜索