Php 如何按分组优先级对MySQL数据进行排序
我正在尝试使用php根据分组优先级对mysql数据进行排序。我有一个名为“用户”的表,其中包含会员资料数据,另一个名为“评论”的表中包含会员对评级的反馈。我在review表的review_count字段中存储从0到5的评分 现在,我想根据以下优先级对用户配置文件进行排序: 表“用户”是这样的:Php 如何按分组优先级对MySQL数据进行排序,php,mysql,database,sorting,Php,Mysql,Database,Sorting,我正在尝试使用php根据分组优先级对mysql数据进行排序。我有一个名为“用户”的表,其中包含会员资料数据,另一个名为“评论”的表中包含会员对评级的反馈。我在review表的review_count字段中存储从0到5的评分 现在,我想根据以下优先级对用户配置文件进行排序: 表“用户”是这样的: uid name picture membership_status last_login -- ---------- ---------- ------------
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");
表格评论是这样的:
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");
现在我想按以下优先级对这些数据进行排序:
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");
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按图片描述排序时,这是一个字母描述顺序。您必须通过一个函数来更改图片,该函数在有图片时返回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");
试试这个
我想你也得重复一遍
对不起,我的语言不流利