选择文章和选择文章喜欢的时间只有文章喜欢(如果在文章喜欢的行中有userID)

时间:2014-04-01 11:52:18

标签: mysql sql

我有2个简单的表

第一张表

Articles
================
ID
Title
Content

和第二张表

Article_Likes
================
ArticleID (FK)
UserID
Time

如果用户喜欢该文章(如果Article_Likes表中有一行),我想选择文章标题,内容和喜欢的时间

这是我的代码,它返回文章,喜欢时间OK。但是如果Article_Likes中没有行(他不喜欢),我会得到空的结果。

即使不喜欢,如何选择文章。但如果他喜欢,也选择喜欢的时间? 请帮忙。谢谢

SELECT
   Article.ID,
   Article.Title,                                       
   Article.Content,
   Article_Likes.Time
FROM Articles
   INNER JOIN Article_Likes ON Articles.ID = Article_Likes.PostID
WHERE  Article.ID = (ArticleID)
   AND Article_Likes.UserID = (UserID)
LIMIT 1

编辑此查询有效,请检查合成

SELECT  Article.ID, 
    Article.Title, 
    Article.Content, 
    COALESCE(Article_Likes.Time,'NOT LIKED') AS Time
FROM Articles
    LEFT JOIN Article_Likes ON Article.ID = Article_Likes.ArticleID AND Article_Likes.UserID = (UserID)
WHERE Article.ID = (ArticleID)
    LIMIT 1

2 个答案:

答案 0 :(得分:0)

而不是内部,使用左连接。由于内部联接显示两个表中都存在的值,因此只要您希望左侧(文章)表中的所有记录都使用LEFT JOIN。

SELECT
   Article.ID,
   Article.Title,                                       
   Article.Content,
   Article_Likes.Time
FROM Articles
   LEFT JOIN Article_Likes ON Posts.ID = Post_Likes.PostID
              AND Post_Likes.UserID = (UserID)
WHERE  Article.ID = (ArticleID)

答案 1 :(得分:0)

尝试:

SELECT
   Article.ID,
   Article.Title,                                       
   Article.Content,
   COALESCE(Article_Likes.Time,'NOT LIKED') AS Time
FROM Articles
   LEFT JOIN Article_Likes ON Article.ID = Article_Likes.ArticleID 
WHERE  Article.ID = (ArticleID)
LIMIT 1