2010-04-14 81 views
4

我有一個數據表中有帖子,然後我有一個單獨的數據表中刪除了帖子。刪除帖子後會發生什麼情況,即將ID get添加到已刪除的表格中,而不是刪除帖子條目。MySQL select語句where table1.id!= table2.id

什麼是選擇從職位表中的所有帖子,而不選擇具有其ID中刪除表

回答

2

如果你不能改變你的表,你可以做一個Left Join(其將盡可能加入您的deleted_table),然後檢查idNull(意味着沒有找到任何行)。

Select everything_you_need 
From post_table p 
Left Join delete_table d On (d.id = p.id) 
Where d.id Is Null; 

確保在id列上有索引以獲得最佳性能。

2

,豈不是更容易的額外列添加到您的帖子表格中的一個乾淨的有效方式和存儲和布爾值的刪除?或者使用一個整數字段(表示用戶ID),如果你想存儲誰刪除它,0 =不刪除。

+0

這會更容易,但這是針對我沒有設計的第三方基礎架構,我無法更改它的核心結構。 – Michael 2010-04-14 11:33:54

1

如果你有一個很好的理由不爲bigstylee建議使用一個布爾標誌,您可以使用EXISTS子查詢:

SELECT * FROM table1 
    WHERE NOT EXISTS 
    (SELECT * FROM table2 WHERE table1.id=table2.id); 
+1

這會起作用,但是簡單的左連接比做子查詢容易得多。 – oezi 2010-04-14 11:40:15

+0

我不同意。這看起來更清晰易讀,因爲它實際上說明了你在做什麼。在這個簡單的例子中,Mysql會優化它。 – Tomas 2010-04-14 11:47:28

相關問題