不在使用MySQL的特定表中
我有两张桌子:不在使用MySQL的特定表中,mysql,sql,join,Mysql,Sql,Join,我有两张桌子: 其中一人担任我的成员和 另一个保存帖子的id和用户id以在其页面上隐藏帖子 如何选择除不在隐藏表中的帖子以外的所有帖子 伪语句示例 “从不在(其他表)中的帖子中选择*” 这就是我目前所拥有的 SELECT * FROM `acmPosting` LEFT JOIN `hidePosts` ON acmPosting.id = hidePosts.postID WHERE `sender`='$userID' OR `recip`='$userID' OR `sender` IN
SELECT * FROM `acmPosting` LEFT JOIN `hidePosts` ON acmPosting.id = hidePosts.postID WHERE `sender`='$userID' OR `recip`='$userID' OR `sender` IN ($friendsArray) OR `recip` IN ($teamsArray) AND hp.id IS NULL ORDER BY `timeSent` DESC LIMIT 10
假设第二个表是postHides,并且两个表都有一个postId列:
SELECT * FROM posts WHERE postId NOT IN (SELECT postId FROM postHides)
这被称为反连接,使用
不在中时应等效(尽管使用不同的查询计划):
有关更多信息,请参阅本文:假设另一个表名为hide\u list
,其中posts.id
的外键为fk\u post\u id
。
然后,select语句将是:
SELECT posts.* from posts,hide_list WHERE NOT posts.id=hide_list.fk_post_id;
更优化的解决方案是:
SELECT posts.* from posts,(SELECT fk_post_id from hide_list) hide_list WHERE NOT posts.id=hide_list.fk_post_id;
除了不在隐藏表中的帖子以外的所有帖子。。。因此,基本上,隐藏表中的所有帖子?它不应该是SELECT*FROM posts WHERE ID NOT in(其他表)吗“
你忘了写ID
你能分享你的表格结构吗?@MahmoudGamal你为什么要删除你的答案?我只是对这一句话吹毛求疵——这仍然是一个很好的答案。这对我来说似乎是一个很棒的解决方案,但我似乎无法让它发挥作用。这是我在acmPosting.id=hidePosts.posted中从acmPosting
左连接hidePosts
中选择的*,其中sender
='$userID'或recipsender
在($friendsArray)或recip
在($teamsArray)中而hp.id按timeSent
DESC LIMIT 10的顺序为空,更不用说我在IS NULL字段中使用了快捷方式。现在开始工作了
SELECT posts.* from posts,hide_list WHERE NOT posts.id=hide_list.fk_post_id;
SELECT posts.* from posts,(SELECT fk_post_id from hide_list) hide_list WHERE NOT posts.id=hide_list.fk_post_id;
"SELECT * FROM posts WHERE post_id NOT IN (select post_id from other_table)"