0

嗨,我的数据库中有两个表:用户和评级。我需要按评级对它们进行排序:

SELECT * 
FROM users
LEFT JOIN ratings ON users.id = ratings.id
ORDER BY ratings.total_value / ratings.total_votes DESC 
LIMIT 0 , 30

有时 total_value 值为空,我是否应该添加其他条件来检查这些值是否为空?

4

3 回答 3

0

我认为COALESCE()会在这里工作:

ORDER BY COALESCE(ratings.total_value, 0) / ratings.total_votes DESC 
于 2013-09-23T15:40:18.000 回答
0

您可以使用COALESCE(ratings.total_value, 0)返回第一个非空值。如果ratings.total_valueNULL,那么你会得到0

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

于 2013-09-23T15:40:26.617 回答
0

我的简单测试select 1 / 0给出了一个空值,所以我什至不知道你是否需要关心

于 2013-09-23T15:40:59.717 回答