2011-02-08 66 views
4

我有兩個表如下從兩個加入表中刪除?

tbl1    tbl2 
id    article_id 
title,   image 
whole_news 
tags, 
author, 
older (datetime) 

其中tbl1.id - > tbl2.article_id

如何刪除兩個表中的較舊的< 2008-02-10 00:00:00記錄?

回答

9

查看我對類似問題的回答here

總之,它看起來像

delete s, r from tbl1 s left join tbl2 r on s.id = r.article_id where s.older < str_to_date('2008-02-10 00:00:00', '%Y-%m-%d %H:%i:%S'); 

但更好的解決辦法是具有上刪除級聯外鍵約束,如果這是一個選項,然後就從TBL1刪除與適當的where子句。

0

您可以使用triggers

+0

觸發器是在表級別正確執行數據關係的糟糕解決方案。如果數據完整性是一個問題,我建議在使用觸發器之前轉移到InnoDB。 – bot403 2011-02-08 15:57:30

0

最簡單的方法:你應該使用外鍵用ON DELETE CASCADE。

+0

它需要InnoDB表 – Distdev 2011-02-08 14:51:04