1. 程式人生 > >Unknown table 'a' in MULTI DELETE的解決辦法

Unknown table 'a' in MULTI DELETE的解決辦法

在儲存過程中,呼叫:

delete a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2; 出現題目中的錯誤,原因如下

在mysql中多表聯合刪除時,表別名只能在sql中表關聯部分宣告。我們應該避免不是表關聯部分宣告別名,因為這產生歧義的sql,從而產生不是期望的結果,例如在錯誤的表中刪除行,舉個例子來說:

DELETE t1 AS a2 FROM t1 AS a1 INNERJOIN t2 AS a2; 對於多個表的刪除,表的列表中提到的表別名的引用,使用預設資料庫,除非已經明確地指定了一個數據庫。例如,如果預設資料庫是db1,下面的語句將不會工作,因為不確定的別名a2被認為已經有了db1:
DELETE a1, a2 FROM db1.t1 AS a1 INNERJOIN db2.t2 AS a2
WHERE a1.id=a2.id;
除了預設資料庫外,為了正確地匹配表的別名,我們必須明確地指定正確的資料庫的名字, DELETE a1, db2.a2 FROM db1.t1 AS a1 INNERJOIN db2.t2 AS a2
WHERE a1.id=a2.id;
根據上述理論,我的sql應該這樣寫: delete db1.a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2;
還有需要注意的是:

1.如果你為一個表聲明瞭別名,當你指向這個表的時候,就必須使用這個別名,例如:

-- 正確的寫法:
DELETE t1 FROM test AS t1, test2 WHERE ...
-- 錯誤的寫法:

DELETE
test FROM test AS t1, test2 WHERE ... 2.在多個表聯合刪除時,不能使用order by 或limit,而單個表的刪除時就沒有這個限制。

3.當前,我們還不能在刪除表的時候,在子查詢中select from相同的表。

相關推薦

Unknown table 'a' in MULTI DELETE解決辦法

在儲存過程中,呼叫: delete a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2; 出現題目中的錯誤,原因如下: 在mysql中多表聯合刪除時,表別名只能在sql中表關

錯誤程式碼: 1109 Unknown table 'ename' in MULTI DELETE

1、錯誤描述1 queries executed, 0 success, 1 errors, 0 warnings 查詢:delete a.ename from emp 錯誤程式碼: 1109 Un

MYSQL之You can't specify target table for update in FROM clause解決辦法

這篇文章主要介紹了mysql中You can’t specify target table for update in FROM clause錯誤解決方法,需要的朋友可以參考下 mysql中You can't specify target table for update

linux centos環境下,perl使用DBD::Oracle遇到報錯Can't locate DBDOracle.pm in @INC 的解決辦法

acp right tps 名稱 ica 補充 str htm 遠程數據庫 前言 接手前輩的項目,沒有接觸、安裝、使用過perl和DBD::Oracle,也沒有相關的文檔記錄,茫茫然不知所措~~。一開始發現這個問題,就想著迅速解決,就直接在google上搜報錯信息,搜索的

$.cookie is not a function;原因及解決辦法

方法 () 通過 js文件 func cti query 原本 cookie 一、沒有引入jQuery庫文件二、jQuery庫文件和jquery.cookie.js文件的順序問題。須先引入jQuery庫文件再引入cookie插件文件三、頁面的加載順序所導致大家的問題大多出在

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its 錯誤解決辦法

eat blog clas min clear gin bsp term rmi This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and

AIX上報:“Shell will time out in 60 seconds” 解決辦法

time out in 60 secon 本篇文章主要介紹了"AIX上報:“Shell will time out in 60 seconds” 解決辦法",主要涉及到AIX上報:“Shell will time out in 60 seconds” 解決辦法方面的內容,對於AIX上報

chrome 調試進入 paused in debugger 狀態解決辦法

div except code mark gravity pause name class 一位 今天調試代碼的時候總是一刷新就進入 debugger 狀態,總是需要按幾次 F8 才能進到頁面,我那個暴脾氣啊,幾次後終於是忍不住了,然後再網上找到了解決辦法。就如一位網友所

LeetCode第448題 Find All Numbers Disappeared in an Array解決辦法

    題目 Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear

HDU 2057 A+B Again 手動解決辦法

主要是坑在了空間釋放上QAQ,每次gets完之後進行處理,處理完之後必須得重新初始化字串!!!! 真的是大坑,,一道水題做了一晚上…… 題目如下: A+B Again Problem Description There must be many A + B pr

SpringMVC——jsp上傳圖片報錯The current request is not a multipart request的解決辦法

報錯介面如下:   主要報錯語句為: The current request is not a multipart request 就是說當前這個請求不是一個multipart request,也就是說不是上傳檔案的請求。 那怎麼辦呢? 這裡我們需要知道一點,

postgreSQL/lib/oracle_fdw.dll":%1 is not a valid Win32 application解決辦法

1、下載postgreSQL 2、下載oracle_fdw 問題: ERROR:could not load library "E:/python/postgreSQL/postgreSQL/lib/oracle_fdw.dll":%1 is not a val

MySQL之Field ‘***’doesn’t have a default value錯誤解決辦法

今天,中國部落格聯盟有博友反饋,zgboke.com 無法提交部落格,當時我正好準備去假日廣場聚會,就匆匆忙忙的提交試了下,發現提交部落格的時候確實報如下錯誤:提示 web_pic 不能為空值。很納悶,之前都可以成功提交的,為什麼突然不行了?看了下網上的案例,說是需要修改 MySQL 的配置什麼的,但是目前

Svn中Path is not a working copy directory解決辦法

在其他目錄下建立一個資料夾,然後CheakOut出你的project,然後匯入到你的eclipse中就可以了。 ------------------------------------------------------------------------------

windwos下啟動Redis或者Sentinel報錯【listen:Unknown error】的原因及解決辦法

筆者一般在linux下使用redis,因為redis團隊並沒有編寫windows版本的redis,所以windows版本的redis維護和更新沒有linux版本的及時。最近有同事在windows下使用redis時遇到了問題,具體如下。 1. 報錯資訊 報

Android中cannot be resolved or is not a field錯誤的解決辦法

以下問題可以參考: 1.R cannot be resolved or is not a field 2.id cannot be resolved or is not a field 在寫第一程式的時候,遇到了這個錯誤,我在引用一個變數時,ListView myList

Edit this number in the Account解決辦法

開發小夥伴最近進入後臺時候是不是看到以上內容,進入任何模組都無法使用,是的必須新增聯絡方式!本以為新增聯絡方式就完事了,可是湊巧的是我們的賬戶之前註冊人員把密保給忘記了,輸入密碼後,就出現了以下介面!好吧..尷尬了最後給開發者後臺打了 電話 等待了一個小時終於得到了,對方稱是

table-row設定border無效解決辦法

<div class="table"> <div class="row"> <div class="cell"> <p>Blah blah</p> <

Unknown column 'rownum' in 'where clause'解決方案

Unknown column 'rownum' in 'where clause',當在巢狀的查詢語句裡面用到rownum的時候會遇到這個問題,比如: SELECT * FROM  (select t.id,t.name from USER_INFO t where t.s

selenium執行時出現錯誤資訊:Message: 'geckodriver' executable needs to be in PATH 的解決辦法

Windows 環境,Selenium 基於Python,執行時出錯: 下載解壓後將getckodriver.exe複製到Firefox的安裝目錄下,如(C:\Program Files\Mozilla Firefox),並在環境變數Path中新增路徑:C:\Pro