2012-08-15 61 views
1

排序可以說我有一個具有以下字段名稱MySQL查詢定製的功能

'id' 'likes' 'rating' 'view' 

一個正常的MySQL的排序將需要一個表的簡單

SELECT * FROM $table ORDER BY likes DESC, rating DESC, view DESC 

現在可以說,我會想通過任意函數訂購我的表中的給定條目

function custom_sort(likes, rating, view) { 
    fame = 0.5 * like + 0.25 * rating - view; 
    return fame; 
} 

我想知道是否有可能做這個僞代碼類似行動

SELECT * FROM $table ORDER BY custom_sort(likes, rating, view) DESC 
+1

你甚至可以不用任何功能,只是寫這一切(我的意思是'0.5 *像+ 0.25 *評級 - 圖')在ORDER BY子句中。 – Devart 2012-08-15 09:53:49

回答

1

如何簡單...

SELECT * FROM $table ORDER BY (0.5 * likes + 0.25 * rating - view) DESC 
+1

這隻適用於如果你使用正常的數學運算符,如+ -/*但PHP功能如min/max呢? – toxicate20 2012-08-15 10:16:11

+1

@ toxicate20是的,但是您不應該將這些功能與聚合功能混淆。例如,你可以在'ORDER BY'表達式中寫入類似'0.5 * LEAST(likes,0.5)'的東西。 – raina77ow 2012-08-15 10:28:41