首頁  >  文章  >  後端開發  >  關於資料庫指定規則排序的問題

關於資料庫指定規則排序的問題

WBOY
WBOY原創
2016-08-04 09:21:43856瀏覽

資料庫有列store儲存商城名字,現在想讓商城為淘寶,亞馬遜排在前面,其餘商城依資料建立時間排序,而且需要分頁。
有想方案
一mysql有提供按field排序的方法,但是filed必須包含資料庫已存在的所有商城類型,不然沒包括的會打亂排序,但是store下的商城(比如日亞等等)會陸續增加,所以這條sql語句就要持續改變了。於是想請教有沒有什麼很好的方案。
二 增加一個字段對應store的數字id,按數字id排序,但是產品現在是想讓 淘寶,亞馬遜排在前面,但是朝令夕改想讓日亞排在前面,那這套邏輯豈不是打亂了。
請教各位有什麼好的方案。

回覆內容:

資料庫有列store儲存商城名字,現在想讓商城為淘寶,亞馬遜排在前面,其餘商城依資料建立時間排序,而且需要分頁。
有想方案
一mysql有提供按field排序的方法,但是filed必須包含資料庫已存在的所有商城類型,不然沒包括的會打亂排序,但是store下的商城(比如日亞等等)會陸續增加,所以這條sql語句就要持續改變了。於是想請教有沒有什麼很好的方案。
二 增加一個字段對應store的數字id,按數字id排序,但是產品現在是想讓 淘寶,亞馬遜排在前面,但是朝令夕改想讓日亞排在前面,那這套邏輯豈不是打亂了。
請教各位有什麼好的方案。

這個問題得兩個欄位:一個是weight(權重),一個是 sort(排序欄位),
你這樣子

  1. 淘寶: weight: 100 sort: 1,

  2. 亞馬遜:weith: 100 sort: 2,

  3. 日亞: weight: 100 sort: 3

  4. 其他: weight: 1 sort: 1

  5. ...

你的 sql 這麼寫:select * from table order by weight * sort,這樣就解決了。如果要改權限的話,可以調整 weight,也可以改 sort

複雜邏輯排序,不要在資料庫層,應該放到程式碼層,例如放到一個可排序的陣列或是map裡,自己定義排序規則即可,jdk很多排序的陣列和map

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn