我有一个包含帖子的数据表,然后我有一个单独的数据表,删除了帖子。删除帖子后会发生的情况是,它的ID被添加到已删除的表中,而不是删除帖子条目。
什么是从posts表中选择所有帖子而不选择已删除表中具有ID的帖子的一种干净有效的方法
答案 0 :(得分:2)
在posts表中添加额外的列并删除存储和布尔值会不会更容易?或者如果要存储删除它的人,则使用整数字段(表示用户ID),0 =未删除。
答案 1 :(得分:2)
如果您无法更改表格,可以执行Left Join
(如果可能,请加入deleted_table
),然后检查id
是否为Null
}(表示没有找到任何行)。
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 :(得分:1)
如果你有充分的理由不像bigstylee建议的那样使用布尔标志,你可以使用EXISTS子查询:
SELECT * FROM table1
WHERE NOT EXISTS
(SELECT * FROM table2 WHERE table1.id=table2.id);