您好我有3张桌子:
(这是用户和帖子系统的示例)
用户:id,用户名,密码
帖子:id,user_id,content
post_likes:id,user_id,post_id,date
我想获取用户仅向其他用户发布的所有帖子。用户可以喜欢所有帖子(他自己的帖子和其他用户的帖子)。
换句话说:我不想让他喜欢自己发布的帖子。
类似的东西(这不是语法,只是表达自己更好的例子):
SELECT * FROM post_likes
WHERE user_id
= 3 AND posts.user_id!= 3
答案 0 :(得分:4)
试试这个
SELECT * FROM post_likes pl
LEFT JOIN posts p ON pl.post_id=p.id
WHERE pl.user_id = 3 AND p.user_id != 3
答案 1 :(得分:1)
你可以试试这个
SELECT * FROM post_likes pls
INNER JOIN posts p ON pls.post_id=p.id
WHERE pls.user_id = 3 AND p.user_id != 3
答案 2 :(得分:0)
尝试这样的事情:
SELECT *
FROM users u
INNER JOIN post_likes pl ON (u.user_id = pl.user_id)
INNER JOIN posts p ON (p.id = pl.post_id AND p.user_id <> u.id)
WHERE u.id = ...
答案 3 :(得分:0)
您正在寻找用户3的post_likes,其中post_id不代表他自己的帖子(即post_id不在他自己的post_id集合中的位置):
select *
from post_likes
where user_id = 3
and post_id not in (select id from posts where user_id = 3);