用户的SQL筛选结果

时间:2014-09-20 01:51:27

标签: mysql sql

我有一个简单的MySQL数据库和一个表,称之为X.用户通过PHP与X交互。简单的东西。现在我想让每个用户标记特定的"行"在X中,以便在将来搜索X时不会出现。

实施例。显示每个用户,比如行1到10.用户A不想看到第4,8,9行。但是用户B,Q和Z喜欢这些行,没有它们就无法生存。哦,我们不能忘记用户D,他们讨厌每一行但是......等等......

我该怎么做呢?

更新

我应该注意到:我意识到我可以创建另一个包含人们不想要的行的表格,但是设计表格的最佳方式是为了支持增加数字或用户和数据行?

1 个答案:

答案 0 :(得分:0)

您需要一个名为X_blacklist的表。

它有两列:useridpostid。这两列是复合主键。

对于userid标识的用户隐藏postid标识的帖子,她会将该行插入X_blacklist。然后,当您将X中的项目显示给用户时,请执行以下操作:

 SELECT X.postid, X.postcontent
   FROM X
   LEFT JOIN X_blacklist ON X.postid = X_blacklist.postid AND X_blacklist.userid = ?
  WHERE X_blacklist.postid IS NULL

这消除了X表中特定用户的其他表中提到的项目。