我需要做以下事情:
SELECT * FROM Video WHERE visible = 1 ORDER BY votesUp/votesDown DESC
但我知道votesDown
可以承受0(零)作为其值。我该如何解决以避免除零?
OBS :在我的情况下,当{0}时可以将votesDown
变为1。
答案 0 :(得分:6)
使用IF()
功能,您可以将0
转换为1
。
你能试试吗?
SELECT *
FROM Video
WHERE visible = 1
ORDER BY votesUp / IF(votesDown = 0, 1, votesDown) DESC
答案 1 :(得分:3)
这样做:
SELECT * FROM Video WHERE visible = 1
ORDER BY votesUp / CASE votesDown WHEN 0 THEN 1 ELSE votesDown END DESC;
但是,您通常会按所有投票的百分比来订购。当根本没有投票时,结果是未定义的,所以使用NULL然后:
SELECT * FROM Video WHERE visible = 1
ORDER BY votesUp / NULLIF(votesUp + votesDown, 0) DESC;