1

我在数据库中有 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 表中。好的。

然后,例如,Jack 单击了 g.com,因此他将无法再次单击 g.com。但是,由于尼克没有点击 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

谢谢。

4

1 回答 1

1

尝试这个 ::

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= ?
    )
于 2013-01-03T14:05:52.513 回答