mysql數據庫對字段自定義排序的應用


之前做項目 有個需求是

二手租房按照 房租價格 從低到高排序,面議的價格要在最后顯示出來

因為數據庫中 面議 的價格(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_id
LEFT JOIN `welife_system`.`user_wechat` ON welife_system.user_wechat.unionid = welife_quan.quan_post.user_id
LEFT JOIN `quan_post_second` ON quan_post_second.pid = quan_post.id
LEFT JOIN `welife_center`.`city` ON welife_center.city.id = welife_quan.quan_post.city_id
WHERE
(`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` DESC
LIMIT 30

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM