我正在创建一些内容来记录每个项目的观看次数。仅当用户之前没有查看过时,每个项目的视图才会增加。
我正在使用2张桌子,
`itemsMain` is the main table
id | itemTitle | itemViews
--------------------------------
1 | Item 1 | 1
2 | Item 2 | 1
itemStats
是记录每个视图的表。即使同一用户两次查看同一项目,也会插入一条记录。 (Helps for analysis later)
。
genId | itemId | itemViewedUserId |
1 | 1 | 1
2 | 1 | 1
此处userId 1
已查看itemId 1
一次,因此itemsMain
中的itemViews为1。
但是,如果他再次查看相同的itemId 1
,则需要在itemStats
中插入记录,但itemViews
中的itemsMain
列不需要递增。
这样的事情怎么办?我目前使用php来选择是否存在记录,然后进行增量。
这样的东西在单个sql语句中是否可行?
这一切都是这样的:
如果在itemStats
=>中找到匹配记录将记录添加到itemStats
,但不要在itemViews
itemsMain
如果在itemStats
=>中找不到匹配的记录将记录添加到itemStats
,但在itemViews
itemsMain
记录需要插入itemsStats
,无论是否存在,但只有在itemsStats
中的记录不存在时才需要进行增量。
示例:
insert into itemStats (1,2) //Adds the record to `itemStats` as well as increments `itemViews` in `itemsMain`
insert into itemStats (1,2) //Adds the record to `itemStats` but no increment to `itemViews` in `itemsMain`