[英]How to sort MySQL data by grouping priority
我試圖在分組優先級的基礎上用php對mysql數據進行排序。 我有一個名為“ users”的表,其中包含成員個人資料數據,其他名為“ reviews”的表,包含成員的評分和反饋。 我在評論表的review_count字段中存儲從0到5的評分。
現在,我要根據這些優先級對用戶個人資料進行排序:
表“用戶”是這樣的:
uid name picture membership_status last_login
-- ---------- ---------- ----------------- ------------------
1 Jhon jhon.jpg 1 2014-07-16 04:40:05
2 Ravi 0 2014-07-09 10:18:38
3 Lucy lucy.jpg 0 2014-07-07 11:46:53
4 Sweta 1 2014-07-07 11:46:53
5 Philip philip.jpg 0 2014-07-09 10:31:53
表評論是這樣的:
id review_by review_to review_count
----- ----------- --------- ------------
1 8 1 5
2 12 2 3
3 22 5 4
現在,我想按以下優先級對這些數據進行排序:
這是我正在使用的查詢:
$sel_profiles = mysql_query("SELECT a.*,
b.review_to
FROM users a
LEFT JOIN reviews AS b ON b.review_to = a.uid
ORDER BY a.membership_status DESC,
b.review_count DESC,
a.picture DESC,
a.last_login DESC
LIMIT 0 ,10");
但是我沒有得到想要的正確結果。 請任何人都可以建議我如何根據分組優先級獲得輸出。 提前致謝。
$sel_profiles = mysql_query("SELECT a.*,
b.review_to
FROM users a
LEFT JOIN reviews AS b ON b.review_to = a.uid
ORDER BY a.last_login DESC ,
a.membership_status DESC
LIMIT 0 ,10");
按這兩個順序本身將獲得所需的結果。
當mysql按圖片desc排序時,這是字母desc順序。 您必須通過功能更改圖片,當有圖片時返回1,否則返回0。 案例是一個好方法。
$sel_profiles = mysql_query("SELECT a.*, b.review_to, case when a.picture is null then 1 else 0 end case DESC as isPictured FROM users a LEFT JOIN reviews AS b ON b.review_to = a.uid ORDER BY a.membership_status DESC, b.review_count DESC, isPictured DESC, a.last_login DESC LIMIT 0 ,10");
嘗試這個 !
http://dev.mysql.com/doc/refman/5.0/fr/case-statement.html
我雖然也要重復一遍
對不起,我的語言,我的英語不太流利
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.