我有2个表,分别称为posts
和user_posts
posts table
id content created_at
1 mmm 142189
2 eee 145189
3 sdad 149189
4 asdasd 178898
5 dqweq 144777
6 w32334 123459
user_posts
id user_id post_id created_at
1 1 1 142589
2 2 2 142789
3 3 3 142799
我想要的是我只想先显示当前用户的user_post
。假设1,那么posts
表中所有其他不在user_posts
表中的user_id!= 1
这是我尝试的
SELECT * FROM `posts` left join `user_posts` on posts.id=user_posts.post_id where (user_posts.post_id not in (select post_id from `user_posts` where `user_posts`.user_id !=1) or user_posts.post_id is null) ORDER BY `user_posts`.`created_at` DESC,posts.created_at desc
我得到了预期的结果。但是我对not in query不满意,因为随着user_posts
表的增长,它会越来越慢。如何编写更好的查询?