簡體   English   中英

“ IF”語句MySQL

[英]“IF” statement MySQL

我正在制作一個可以投票的應用程序,我有一個表格,其中包含從0到100的“評分”,也包含“投票”,代表投票數。 我在用:

UPDATE maincategory SET rating='75'/votes

但是,當沒有人投票時,投票顯然為“ 0”。 這就是“ 75/0”(除以“ 0”)。 我該如何做出“如果”聲明或其他可以驗證該事物是否具有“ 0”票並且未除以“票”(因為它們為“ 0”)的東西?

提前致謝

編輯:我的投票邏輯沒有多大意義,我現在已經看到了...對不起,我必須做出些什么來糾正此問題? 也許將所有評分加在一起,再除以票數?

如果您希望在0票的情況下將評分定為75則可以使用:

UPDATE maincategory SET rating=75/MAX(1,votes)

這樣可以確保始終至少有一個“票數”可以除以。 基本上,它會強制評估0票的情況與1票的情況相同。

只需在有投票的行上運行它即可。

UPDATE maincategory SET rating='75'/votes WHERE votes>0

保留其他默認值0NULL ,然后在您的應用中處理。

同樣, '75'/votes位對我來說聽起來有點離譜。 一票,它的評級是75。兩票,它的評級是37.5。 投票通常不會降低評分。

通常,將這樣設置新的等級(這是偽代碼,無效的SQL):

rating = ((current_rating * current_vote_count) + new_rating) / (current_vote_count + 1)

要使用CASE語句(相當於IF)提供第三個答案:

UPDATE maincategory SET rating= CASE WHEN votes=0 THEN 0 ELSE '75'/votes END

votes0時,會將rating的值設置為0

作為IF語句:

UPDATE maincategory SET rating= if(votes=0, 0,'75'/votes)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM