假設我們有一個包含以下數據的簡單數據庫:操縱排序結果考慮到用戶的偏好 - 數據庫
name
apple
pear
banana
grape
用戶希望將這些水果中的名稱進行排序,我們都會有,沒有驚喜
apple
banana
grape
pear
然而,出於某種原因,用戶想向pear
是第三個水果,這意味着他想有:
apple
banana
pear
grape
而且,重要的是,用戶希望在此後按名稱對水果進行分類時,保留此訂單。
我們應該如何解決這個問題?在我的頭頂上,我們可以添加一個字段user_sort_id
,當用戶對排序結果進行排序和操作時,這些字段將被更新,我們將使用該字段作爲排序關鍵字。
init value -> sort by name ->place pear as the seconds
name user_sort_id
apple 0 0 0
pear 1 3 2
banana 2 1 1
grape 3 2 3
這種方法應該在理論上工作。但是,在實踐中,我想不出一個可以實現這一點的優雅和快速的SQL語句。任何想法或選擇?
我可以問一下,如果您添加胡蘿蔔,例如它會發生什麼。香蕉或胡蘿蔔後出現梨串嗎? – niktrs
隱藏的排序鍵實際上是唯一的解決方案,因爲否則沒有規則來排序項目。排序鍵必須是用戶特定的。過去對Netflix的隊列非常惱火的一件事是明確地操作了排序鍵。他們應該至少*以10爲增量編號,以使重新排序更簡單。 – wallyk
@niktrs:好問題。我想我會把它放在最後,不管名字如何,直到你做另一種。在我們的案例中,實際上我們不考慮新插入的情況。 – pierrotlefou