背景:SEO下選擇某查詢條件 查詢展示信息為裝修設計師以及設計師作品。設計師原型設計為:選擇某風格 例如:簡約,則列表出現擁有簡約風格的設計師信息以及該設計師類型為簡約的作品(3條靠前記錄) 瀏覽原型後發現問題:若不選擇風格時,直接 sor t瀏覽量完事。但是選擇某項之後 要在前端體現選擇作用,就和 ...
背景: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
備註:多欄位排序規則 我暫時沒理解透徹,如有不合理地方 請諒解