SQL查询使用其他表中的字段位置

时间:2014-11-18 08:09:13

标签: php mysql sql relationships

您好我有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

4 个答案:

答案 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);