我从未使用过 ORDER BY CASE 或 ORDER BY IF() ,我在互联网上找到的几个例子比帮助我尝试完成以下任务更令人困惑:
我有一个成员列表,我想通过在此成员列表中将用户排序更高(到顶部)来“奖励”用户的活动。
在我的示例中,我有一个名为“users”的 MySQL 表,其中包含 3 列:
user_percentage | user_photo | user_lastlogin
----------------------------------------------------------
12 1 1356389646
42 1 1456549641
37 0 1776389443
84 1 1356535535
56 0 1868689646
66 0 1811189622
71 1 1656779645
- “user_percentage”保存每个用户填写的所有配置文件字段的值 (0 - 100)。
- 如果用户上传了个人资料照片,则“user_photo”保留值(0 = false,1 = true)。
- “user_lastlogin 保存他们上次访问的值(时间戳)。
这有点难以解释,但简单地说就是我想要的:
具有较高 user_percentage 值的用户应该在成员列表的顶部,但如果他没有 user_photo,那么他应该在成员列表中“下移”,如果他有一个旧的 user_lastlogin 时间戳,则将他列出更多在会员顺序下。
另外,我要防止的是用户已经注册,填写了所有个人资料字段(然后 user_percentage 值将 = 100)并上传了照片(然后 user_photo 将 = 1),但从那以后再也没有登录很长一段时间(所以他有一个很旧的 user_lastlogin = 时间戳),然后我希望这个用户在成员列表中向下移动。
我的问题是:这是否可能与 1 MySQL ORDER BY 语句有关?
假设 user_photo 的重要性仅为 30%,而 user_lastlogin 的重要性更高,而 user_percentage 的重要性也更高一些。
有任何想法吗?
此致!