我的表格中包含id
,user_id
,post_id
,like
,views
列。当用户单击“赞”按钮时,将在表格中添加一行,其中包含相应的user_id
和post_id
,like
将设置为1
。如果该行已存在且like
列已为1
,则不会发生任何事情。
当用户访问特定网页时,会在表格中添加一行,其中包含相应的user_id
和post_id
,view
将设置为1
。但是,如果该行已存在,则view
中的值将递增。
问题:我尝试使用INSERT INTO mytable ... ON DUPLICATE KEY UPDATE like = 1
,但表格的主键是id
而不是user_id
或post_id
。如果我将主键设置为user_id
或post_id
,则会出现问题,因为如果存在具有相同user_id
和{{1}的行,则只会重复该行}。
在这种情况下,应该如何构建查询?
或者更好的情况是将表格拆分为2个表格,一个用于post_id
,另一个用于likes
。如果是这种情况,我仍然需要根据views
和user_id
列使该行唯一。
或者做多个SQL查询?
请指教,谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
我建议您有一个喜欢的表,然后在您保留帖子的任何表中,为视图添加一行。因此,无论何时查看此帖子,您只需将该帖子的视图值更新为view = view + 1。
现在要解决您列出的有关主键的问题,您应该注意,您可以在该方案中使用唯一键,该键可以应用于多个列,并可以解决您遇到的问题。因此,例如,如果您的方案中有一个包含userid和postid的唯一键,则您的数据库将不允许该表中具有相同userid和postid的两个不同的行。
因此,为了将来参考,如果您需要,请使用唯一密钥:)