page contents

mysql 条件排序写法

Pack 发布于 2020-03-12 11:02
阅读 1538
收藏 1
分类:数据库

先显示50公里(后台可以设置多少公里)以内,3天(后台可以设置几天)以内发布的动态,要在线的,按距离排序,不按发布的时间,如果3天以内同一个人发布了多条,就只显示这个人最新的一条就可以了,多的就不用显示了, 显示完以后,再显示50公里以外的,1天(后台可以设置几天)以内发布的动态,要在线的,按距离排序,不按发布的时间,如果1天以内同一个人发布了多条,就只显示这个人最新的一条就可以了,多的就不用显示了,最后显示不在线的,按距离显示就行了。(后台要有个设置,男女一天可以查看多少条动态)

530
Pack
Pack

计算距离这些正如前边所说,有解决方案,查询条件及怎么查就不用多说了,我只说如何组合数据并实现排序的逻辑。

首先单独一个SQL要找50公里内、3天、在线、用户去重找第一条,不难,select时加个自定义字段如1 as myOrderFlag

在第一条SQL后边 union 一条SQL查 50公里以外、1天、在线、用户去重找第一条,select加个自定义字段 2 as myOrderFlag,在两句sql外边套个select utable.* from ( sql1 union sql2) as utable order by utable.myOrderFlag asc

搞定……

请先 登录 后评论