我在一个数据库中有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= ?
)