繁体   English   中英

SQL定期在一个表中计数所有新投票,在另一个表中递增总计数值

[英]SQL regularly counting all new votes in one table and incrementing a total count value in another

我有三个表,一个具有用户创建的级别,另外两个具有上述级别上的上,下投票表。

我现在有近1000万张选票,并且在必要时对一个级别的所有选票进行计数变得非常缓慢,因此我计划在级别表上添加两列,其中包含向上和向下投票以及服务器的计数可能每24小时更新一次。

遗憾的是,投票表没有自动递增的主键列,而是主键是mapid和userid的总和,因此一个用户无法为同一张地图投票两次。

因此,我要在票数表中添加一列“已计数”,如果尚未将其添加到汇总数据中,则为0,如果已添加,则为1。 这样,我不需要重新计算已经添加到汇总数据中的所有投票,而只需重新计数。

我的查询需要:

-选择所有计为0的选票

-从该行中获取mapid,并在级别表中增加该mapid的大拇指数

-该票数设为1

我正在使用MySQL。 所有帮助,不胜感激!

Table maps_thumbsup
userid | mapid | counted

Table maps_thumbsdown
userid | mapid | counted

Table maps
id | authorname | leveldata | ... | thumbsupcount | thumbsdowncount

您的主桌还没有投票数吗? Ť

able maps_thumbsup
userid | mapid | counted

Table maps_thumbsdown
userid | mapid | counted

Table maps
id | authorname | leveldata | ... | thumbsupcount | thumbsdowncount

因此,每当有人投票时,只要在mysql中使用set命令“ set thumbsup = thumbsup + 1”,如果它没有那2列,然后添加它,就可以给我发送接口类型mysql / mysql / DBO,我可以更新我的答案发布代码可以对其进行计数并将其插入到新创建的列中,而不必每次都从DB获得单个值时就对所有选票进行计数,那么您可以使用这种方式来获得选票

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM