我運行實時網站,它允許不同的用戶添加其屬性。 當有人搜索特定條件時,我們使用select語句以及指定的條件來選擇匹配的屬性,執行分頁位並顯示結果。限制搜索結果中字段值的數量
我們使用評級算法對每個屬性進行評分,並將其用於顯示屬性的優先級。
的簡化版本:
name type bedrooms user score green house sale two bedrooms alex 6 Blue one rent three bedrooms jack 6 Blue one sale three bedrooms jack 4 gray one sale three bedrooms jack 6 green one rent three bedrooms jack 6 purple one rent three bedrooms jack 6 green one rent three bedrooms jack 6 green one rent three bedrooms gary 6
現在的問題是,有時一些屬性具有相同的分數。在這些情況下,我不希望一個用戶的屬性主導搜索結果頁面,我想設置一個限制,以在搜索結果頁面中顯示任何給定用戶的最多三個屬性。
在這個例子中,我不希望jack擁有的屬性主宰第一頁,而其他用戶的屬性轉到第二頁。這會打亂其他用戶,併爲訪問者創造糟糕的體驗。
如果我想只顯示給定用戶的一個屬性,我會使用Group by,但我不確定要限制爲較大數目(例如三個)。有什麼我可以在MySQL中做到這一點?
編輯:
對不起,如果它不夠清楚。
使用欄顯示添加特定屬性的用戶。示例查詢可能是
SELECT * FROM properties WHERE type = 'sale' LIMIT 5 ORDER BY score
結果可能是五個屬性,全部由jack添加。我想確保只有特定用戶添加的屬性才包含在結果中。通過這種方式,其他用戶添加的屬性將有機會顯示。
我們可以知道一些樣本輸入和期望的輸出嗎?我對用戶部分感到困惑,您的搜索結果是否可以被用戶過濾?如果不是,您是否希望第一頁上的不同用戶獲取最高3個分數? –
@ICanHasCheezburger我想OP要從所有記錄中獲取每個用戶最多3條記錄 –
顯示您的查詢 – Naeem