之前做项目 有个需求是
二手租房按照 房租价格 从低到高排序,面议的价格要在最后显示出来。
因为数据库中 面议 的价格(price)是(-1,0)
如果按照从低到高,面议的价格就会显示在最前面了,这不是项目需求要的。
所以要写一个自定义的排序。
MySQL 中 field自定义排序函数的格式
order by field(value,str1,str2,str3,str4,,,,,,strn)
其中value后面的参数自定义,不限制参数个数
含义
将获取出来的数据根据str1,str2,str3,str4等的顺序排序
--------------------------------------------------------------------------------------------------
SELECT
`quan_post`.`id`, `quan_post`.`is_large`, `welife_center`.`city`.`name` AS `city_name`, `level_id`, `cate_id`, `quan_topic`.`title` AS `topic_title`, `quan_post_second`.`img_list`, `price_market`, `quan_post_second`.`type` AS `second_type`, `price`, `quan_post`.`anony`, `welife_system`.`user_wechat`.`sex`, `welife_system`.`user_wechat`.`nickname`, `quan_post_second`.`realname`, `welife_system`.`user_wechat`.`avatar`, `welife_system`.`user_wechat`.`has_auth`, `welife_system`.`user_wechat`.`auth_info`, `quan_post`.`type`, `is_essence`, `quan_post`.`title`, `quan_post`.`content`, `quan_post`.`num_view`, `quan_post`.`create_at`FROM `welife_quan`.`quan_post`LEFT JOIN `quan_topic` ON quan_topic.id = quan_post.topic_idLEFT JOIN `welife_system`.`user_wechat` ON welife_system.user_wechat.unionid = welife_quan.quan_post.user_idLEFT JOIN `quan_post_second` ON quan_post_second.pid = quan_post.idLEFT JOIN `welife_center`.`city` ON welife_center.city.id = welife_quan.quan_post.city_idWHERE (`quan_post`.`type` = 1)AND (`is_draft` = 0)AND ( `quan_post_second`.`type` = '0')AND (`quan_post`.`status` = 1)AND (`quan_post`.`status` != 3)AND (`quan_post`.`status` != 2)AND (`quan_post`.`status` != 4)ORDER BY FIELD( quan_post_second.price, - 1, 0 ), `quan_post_second`.`price`, `quan_post`.`sort` DESC, `quan_post`.`last_comment_time` DESC, `quan_post`.`create_at` DESCLIMIT 30