MySQL -根据一件事向某些用户显示行而不向其他用户显示行



我在一个数据库中有10个用户。每个用户可以发布任意数量的链接。每个用户都可以看到其他用户发布的所有链接。

如果一个用户点击了一个链接,例如:google.com,他不会再看到这个链接,但是那些没有点击过那个链接的用户,他们仍然可以点击那个链接。

为此,我有2个表(可能它们构建得很糟糕,而且它们与外键无关)。

linksPosted
id   |   link   |   user
1        g.com      john
2        h.com      patrick
3        i.com      stephan
4        k.com      bart
....
clicksMade
id   |   link   |   user
1        g.com      jack
2        h.com      nick
...

所以,有一个主页,每个用户都可以看到其他用户发布的链接。每当一个链接被发布,这将被添加到linksPosted表。好的。

然后,例如,杰克点击了g.com,所以他不能再点击g.com。但是,由于Nick没有点击g.com,他可以点击它。

我如何显示一些行给一些用户,而不是其他不是在一个SQL查询?

我已经尝试过这个没有结果我想:

Select * from linksPosted Except Select * from ClicksMade
SELECT * FROM linksPosted WHERE id NOT IN(SELECT id FROM ClicksMade);
SELECT t1.* FROM linksPosted AS t1 LEFT OUTER JOIN ClicksMade AS t2 ON t1.word = t2.word AND 1.user = t2.user WHERE t2.id IS NULL

谢谢。

试试这个::

Select lp.link
from 
linkposted lp
left join 
(Select cm.id from clickMade where userId= ?
) as tempComment
cm on (lp.id=tempComment.id)
where cm.id is null 

    Select lp.link
    from 
    linkposted lp
where id not in
    (
     Select cm.id from clickMade where userId= ?
    )

最新更新