簡體   English   中英

MySQL Select語句where table1.id!= table2.id

[英]MySQL Select statement Where table1.id != table2.id

我有一個包含帖子的數據表,然后我有一個單獨的數據表,刪除了帖子。 刪除帖子后會發生的情況是,它的ID被添加到已刪除的表中而不是刪除帖子條目。

什么是從posts表中選擇所有帖子而不選擇在已刪除表中具有其ID的那些帖子的干凈有效方式

在posts表中添加一個額外的列並刪除存儲和布爾值會不會更容易? 或者如果要存儲刪除它的人,則使用整數字段(表示用戶ID),0 =未刪除。

如果你不能改變你的表,你可以做一個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 -columns上都有索引以獲得最佳性能。

如果你有充分的理由不像bigstylee建議的那樣使用布爾標志,你可以使用EXISTS子查詢:

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

暫無
暫無

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

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