我从未使用ORDER BY CASE或ORDER BY IF(),我在互联网上找到的几个例子比帮助我完成以下任务更令人困惑:
我有会员名单,我想"奖励"通过在此成员列表中对用户进行更高的排序(到顶部)来略微改变用户的活动。
在我的例子中,我有一个名为&#34的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值的用户应该位于成员列表的顶部,但如果他没有user_photo,那么他应该向下移动"在成员列表中,如果他有一个旧的user_lastlogin时间戳,则会在成员订单中将其列入更多内容。
我试图阻止的是用户已注册,填写所有个人资料字段(然后user_percentage值将= 100)并上传照片(然后user_photo将= 1)但是,由于很长一段时间没有登录(所以他有一个非常旧的user_lastlogin =时间戳),然后我希望这个用户按成员列表顺序向下移动。
我的问题是:这是否可以使用1个MySQL ORDER BY语句?
让我们说user_photo只有30%的重要性,而user_lastlogin的重要性更高,而user_percentage也更高一点。
有什么想法吗?
祝你好运!
答案 0 :(得分:0)
为了开始编写SQL,您需要弄清楚每个参数的价值。
您应该生成一个示例列表,然后将其转换为简单的计算,如:
(photo*timesincelogin*20)+(percentage)
或基于CASE的陈述,每个都有一个计算 - 即:
所有拥有照片的人然后所有人都没有,time*percentage
。
手动波浪'向下移动'对于使用SQL命令的答案来说还不够具体。