簡體   English   中英

php \\ mysql在一個查詢中從兩個不相關的表中刪除數據

[英]php\mysql delete data from two not related table in one query

我必須表tbl1和tbl2之間沒有關系,我想使用一個查詢從兩個表中刪除不同的數據是可能的還是我應該在兩個單獨的查詢中執行

我嘗試了以下查詢

$del =" 
DELETE 
  FROM tbl1
    , tbl2 
 WHERE tbl1.delete_time IS NOT NULL
   AND tbl1.delete_time != '0000-00-00 00:00:00' 
   AND tbl2.delete_time IS NOT NULL 
   AND tbl2.delete_time != '0000-00-00 00:00:00'
";                   
$sql =mysql_query($del) or die(mysql_error());
$res = mysql_query($sql);

但是我遇到了以下錯誤:SQL語法中有錯誤; 檢查與您的MariaDB服務器版本相對應的手冊以獲取在'WHERE tbl1.delete_time IS NOT null和tbl1.delete_time!='0000-0'第1行附近使用的正確語法

提前致謝

考慮通過將它們分開來更改查詢; 像下面

DELETE FROM tbl1 WHERE delete_time IS NOT null AND delete_time != '0000-00-00 00:00:00'; DELETE FROM tbl2 WHERE delete_time IS NOT NULL AND delete_time != '0000-00-00 00:00:00'; 

(或)推薦方式; 將兩個DELETE語句包裝在一個存儲過程中

create procedure usp_deleteData
as
begin
    DELETE FROM tbl1 
    WHERE delete_time IS NOT null 
    AND delete_time != '0000-00-00 00:00:00'; 

    DELETE FROM tbl2 
    WHERE delete_time IS NOT NULL 
    AND delete_time != '0000-00-00 00:00:00'; 
end

另外,盡管您在表之間沒有關系,但是具有名為delete_time公共列,因此您可以執行Multi Table DELETE-JOIN

DELETE tbl1, tbl2 FROM tbl1 
INNER JOIN tbl2 
WHERE tbl2.delete_time = tbl1.delete_time
AND tbl2.delete_time IS NOT NULL
AND tbl1.delete_time IS NOT NULL
AND '0000-00-00 00:00:00' NOT IN (tbl1.delete_time, tbl2.delete_time);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM