Php MySQL Select语句,其中table1.id!=表2.1
我有一个包含帖子的数据表,然后我有一个单独的数据表,其中删除了帖子。删除帖子时会发生的情况是,它的ID get被添加到已删除的表中,而不是删除帖子条目Php MySQL Select语句,其中table1.id!=表2.1,php,mysql,select,join,Php,Mysql,Select,Join,我有一个包含帖子的数据表,然后我有一个单独的数据表,其中删除了帖子。删除帖子时会发生的情况是,它的ID get被添加到已删除的表中,而不是删除帖子条目 从posts表中选择所有posts而不选择在deleted表中具有其ID的posts是一种干净高效的方法向posts表中添加额外的列并存储deleted的布尔值不是更容易吗?或者,如果要存储删除它的人,请使用整数字段(表示用户id),0=未删除。如果您有充分理由不使用Bigstyle建议的布尔标志,则可以使用EXISTS子查询: SELECT *
从posts表中选择所有posts而不选择在deleted表中具有其ID的posts是一种干净高效的方法向posts表中添加额外的列并存储deleted的布尔值不是更容易吗?或者,如果要存储删除它的人,请使用整数字段(表示用户id),0=未删除。如果您有充分理由不使用Bigstyle建议的布尔标志,则可以使用EXISTS子查询:
SELECT * FROM table1
WHERE NOT EXISTS
(SELECT * FROM table2 WHERE table1.id=table2.id);
如果无法更改表,则可以执行以下操作(可能时将加入
已删除的\u表
),然后检查id
是否为Null
(表示未找到任何行)
确保在
id
-列上都有索引,以获得最佳性能。这会更容易,但这是针对我没有设计的第三方基础设施,我无法更改其核心结构。这会起作用,但简单的左连接要比执行子选择容易得多。我不同意。这对我来说似乎更清晰易懂,因为它实际上说明了你在做什么。在这个简单的示例中,Mysql将对其进行同样的优化。。
Select everything_you_need
From post_table p
Left Join delete_table d On ( d.id = p.id )
Where d.id Is Null;