【问题标题】:How should I have select unblocked comment on SQL我应该如何选择对 SQL 的畅通评论
【发布时间】:2016-07-21 17:14:30
【问题描述】:

我应该如何选择未阻塞的 cmets

例如我们有这些表和记录,是否可以显示一个用户想要查看的 cmets 列表?

类似这样:userId2(B) 可以看到的 cmets 列表

结果必须是:

{ 2, "Comment 3" & 2, "Comment 4" & 4, "Comment 6" }

这是我的错误选择:

SELECT        
    Comments.Comment, Comments.UserId
FROM            
    Users 
INNER JOIN
    Comments ON Users.UserId = Comments.UserId 
INNER JOIN
    Block ON Users.UserId = Block.BlockerId AND Users.UserId = Block.BlockedId
WHERE        
    (Block.BlockerId <> 2) 
    AND (Block.BlockedId <> 2) 
    AND (Users.UserId = 2)

这里也是我的示例数据库“testDB.bak”的链接:

Click here to download(File size:200KB)

谢谢你帮助我

【问题讨论】:

  • 根据该屏幕截图,它将是 SQL Server。
  • 是的,它是 SQL 服务器,解决这个问题我很困惑 :(

标签: sql sql-server select inner-join


【解决方案1】:

我认为您正在寻找这样的东西:

select a.UserId, a.Comment from Comments a
left join Block b
on a.UserId = b.BlockedId
and b.BlockerId = <your user here>
where b.BlockerId is null;

【讨论】:

    【解决方案2】:

    如果我理解规则,这应该可以工作:

    SELECT * FROM Comments WHERE UserId NOT IN (SELECT BlockedId FROM Block WHERE BlockerId=2)
    

    【讨论】:

    • 谢谢,它也可以,但是你迟到了一分钟,无论如何谢谢
    猜你喜欢
    • 2013-05-27
    • 2022-08-08
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多