簡體   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