【发布时间】:2013-12-18 12:34:49
【问题描述】:
我需要执行以下操作:
SELECT * FROM Video WHERE visible = 1 ORDER BY votesUp/votesDown DESC
但我知道 votesDown 可以承受 0(零)作为其值。我怎样才能避免被零除?
OBS:在我的情况下,可以让votesDown 变成 1,当 0 时。
【问题讨论】:
-
SELECT * FROM Video WHERE visible = 1 ORDER BY votesUp/IF(votesDown = 0, 1, votesDown) DESC ??
-
@InoS Heo 是的!有用。对不起,如果这很明显,我只是 MySQL 的新手。发布为答案,以便我可以给你积分。
-
我个人只会使用
(votesUp+1/votesDown+1)。排序将大致相同,尽管我现在无法在数学上证明这一点。 -
@Kylotan 我明白你的意思。它非常聪明,一旦它解决了问题,并且随着数字变大,常数就无关紧要了。太棒了。
标签: mysql sql divide-by-zero