需求:需要对用户进行排序,把有头像的优先排序,然后再根据资料更新时间排序。
假设 头像字段:avatar,更新时间字段:updatetime
有同学讲可以用 avatar desc,但显然不够准确,因为avatar是字符串,每个头像的URL又不尽相同,这样会使得用户头像会avatar 字符串长度进行排序,显然跟我们的需求有悖。
解决思路:
使用mysql里的case when进行 判断用户是否有头像,然后定义成新字段,在用来排序
参考SQL:
SELECT
CASE
WHEN avatar = '' THEN
0
ELSE
1
END is_avatar,
updatetime
FROM
user
ORDER BY
is_avatar DESC,
updatetime DESC