关于时间轴的SQL查询喜欢

时间:2015-06-24 22:48:28

标签: sql sql-server

我正在撰写类似于Facebook时间线的内容,用户可以看到所有帖子,如果用户之前喜欢该帖子,也会看到蓝色拇指。

以下是两个表格,

Posts
PostID  | USERID   | MORE COLS....
1       | 1        | ....
2       | 1        | ....
3       | 3        | ....
4       | 5        | ....

Likes
LikeID  | POSTID | USERID   | MORE COLS....
1       | 1      | 1        | ....
2       | 1      | 5        | ....
3       | 2      | 1        | ....
4       | 3      | 6        | ....

我的问题是,如何编写SQL查询以获取所有帖子,并知道用户之前是否喜欢这些帖子?

因此,例如查询的理想结果就像 (如果此用户的ID为1)

All Posts
PostID  | LikedByMeBefore   | ....
1       | true              | ....
2       | false             | ....
3       | true              | ....
4       | true              | ....
5       | false             | ....
6       | false             | ....
.       | .                 | ....
.       | .                 | ....

2 个答案:

答案 0 :(得分:2)

不清楚UserID列中的Posts列是什么,但我可以假设它是创建它的用户。但是,Likes表中的UserID更为明显。您需要使用LEFT JOIN结合ISNULL

DECLARE @UserID INT = 5

SELECT Posts.PostID, ISNULL(Likes.LikeID, 0) AS LikedByMeBefore, ...more columns...
FROM Posts
LEFT JOIN Likes
    ON Posts.PostID = Likes.PostID
    AND (Likes.UserID = @UserID OR Likes.UserID IS NULL)

答案 1 :(得分:2)

据我了解,您想获取有关当前用户所有帖子的“赞”的信息吗?对? 所以,请为当前用户试试:

OrderInformationTable