【问题标题】:Mysql Join tables with condition带有条件的Mysql连接表
【发布时间】:2014-03-02 11:05:12
【问题描述】:

我想列出给定用户的帖子和 cmets,但也列出给定用户尚未发表评论的帖子。

假设我有以下表格和内容

桌柱

ID  TITLE
1   My post A
2   My post B
3   My post C

表格注释

ID  COMMENT         POST_ID     USER_ID
1   My comment X        1          1
2   My comment Y        2          1
3   My comment Z        1          2

我跑

select * from post 
left join comment on post.id = comment.post_id
where comment.user_id=1

当然我得到了

ID  TITLE        ID    COMMENT          POST_ID    USER_ID
1   My post A     1    My comment X      1          1
2   My post B     2    My comment Y      2          1

我想获取用户 1 未评论但我不希望用户 2 评论的所有帖子事件

ID  TITLE        ID    COMMENT          POST_ID    USER_ID
1   My post A     1    My comment X      1          1
2   My post B     2    My comment Y      2          1
3   My post C   

提前感谢您的帮助

【问题讨论】:

    标签: mysql sql join


    【解决方案1】:

    将您的条件从 where 子句移到 on 子句,这样即使用户尚未发表评论,您也会收到帖子

    select * from post 
    left join comment
    on post.id = comment.post_id
    AND comment.user_id=1
    

    See Demo Here

    【讨论】:

    【解决方案2】:

    试试这个

    select post.`ID`,`TITLE`,ifnull(`COMMENT`,0) comment,ifnull(`POST_ID`,0) `POST_ID`,
           ifnull(`USER_ID`,0) `USER_ID` 
    from post 
    left join comment
    on post.id = comment.post_id
    AND comment.user_id=1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2013-08-13
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      相关资源
      最近更新 更多