coax

导航

mysql 字段指定值靠前排序方法,多字段排序排序方法

背景:SEO下选择某查询条件 查询展示信息为装修设计师以及设计师作品。设计师原型设计为:选择某风格 例如:简约,则列表出现拥有简约风格的设计师信息以及该设计师类型为简约的作品(3条靠前记录)

  浏览原型后发现问题:若不选择风格时,直接 sor t浏览量完事。但是选择某项之后 要在前端体现选择作用,就和设计商量选择之后把选择中的风格靠前其他靠后 于是就变成了order by 指定字段指定值,默认排序字段

贴SQL:

 SELECT
       -- 展示信息
    FROM
        查询表 awi
    WHERE
      1 = 1
     ORDER BY <if test="style != null and style != '' and style != '0'"> (CASE WHEN style_code = #{style,jdbcType=VARCHAR} THEN 1 WHEN style_code LIKE CONCAT('%',#{style,jdbcType=VARCHAR},'%') THEN 2 ELSE 3 END ), </if> create_time DESC, browsing_amount DESC LIMIT 0, #{limitEnd}

重点: ORDER BY 

 (CASE WHEN style_code = #{style,jdbcType=VARCHAR} THEN 1 WHEN style_code LIKE CONCAT('%',#{style,jdbcType=VARCHAR},'%') THEN  2 ELSE 3 END ),create_time DESC,browsing_amount DESC
格式:在ORDER BY 之后判断指定字段指定值 并且把符合条件的设置为 sort 的 1排序判定 后面加上正常的业务排序就是按照不选择风格的sort方法
如果是多字段的话 可做成:ORDER BY 字段名1 = '值' desc ,字段2 = '值' desc ,字段3 = '值' desc
备注:多字段排序规则 我暂时没理解透彻,如有不合理地方 请谅解

 

posted on 2018-03-09 17:32  coax  阅读(5917)  评论(0编辑  收藏  举报