2012-07-10 54 views
0

我有問題創建語句刪除多個字段上的連接記錄。我搜索了很多解決方案,但仍然不適合我。MySQL刪除加入多個ON字段

我有兩個表: orders.profile和orders.qualified

沒有一個簡單的單場,但多間加入。基本上基於客戶的需求,他們檔案中存儲的一些項目可能不符合地理位置的要求,因此需要將其刪除。

這是我一直在玩的,目前我得到UNKNOWN TABLE錯誤,當我從開始的表定義中刪除數據庫時,我得到一個NO DATABASE SELECTED錯誤。

DELETE FROM orders.profile 
USING orders.profile AS p 
LEFT OUTER JOIN orders.qualified AS q 
ON p.cust_id = q.cust_id 
AND p.job_number = q.job_number 
AND p.job_seg = q.job_seg 
AND p.zip = q.zip 
AND p.carrier_route = q.carrier_route 
WHERE p.cust_id = {the cust_id in question} 
AND p.job_number = {the job number in question} 
and q.qualified = 0; 

回答

1

根據Holger Brandt的回答,我可以通過定義數據庫和別名來獲得這個工作。

所以查詢應該是這樣的:

DELETE orders.p 
FROM orders.profile AS p 
LEFT OUTER JOIN orders.qualified AS q 
ON p.cust_id = q.cust_id 
AND p.job_number = q.job_number 
AND p.job_seg = q.job_seg 
AND p.zip = q.zip 
AND p.carrier_route = q.carrier_route 
WHERE p.cust_id = {the cust_id in question} 
AND p.job_number = {the job number in question} 
and q.qualified = 0; 
1

嘗試刪除不USING聲明:

DELETE p FROM 
orders.profile AS p 
    LEFT OUTER JOIN orders.qualified AS q 
    ON p.cust_id = q.cust_id ... 

如果這不起作用,有一些更基本的事情。

+0

我沒有得到任何選擇的數據庫......我讀過多個地方明確說與多行刪除時不能使用別名。 – Jeff 2012-07-11 00:03:27

+0

@Jeff,我編輯了答案。如果它不起作用,那麼更重要的是去做一件事。另外,'orders.profile'是否有主鍵? – 2012-07-11 00:19:34

+0

好吧,我想我明白了。數據庫需要定義,並且必須使用別名。 – Jeff 2012-07-11 00:24:06