Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL Select语句,其中table1.id!=表2.1_Php_Mysql_Select_Join - Fatal编程技术网

Php MySQL Select语句,其中table1.id!=表2.1

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 *

我有一个包含帖子的数据表,然后我有一个单独的数据表,其中删除了帖子。删除帖子时会发生的情况是,它的ID get被添加到已删除的表中,而不是删除帖子条目


从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;