MySQL ORDER BY CASE / IF相关问题



我从来没有使用过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 = false)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的重要性也更高。

任何想法?

致以最亲切的问候!

为了开始编写SQL,您需要明确每个参数的价值。

您应该生成一个示例列表,然后将其转换为一个简单的计算,如:

(photo*timesincelogin*20)+(percentage)

或基于CASE的语句,每个语句都有一个计算-即:

所有有照片的人然后所有没有照片的人,按time*percentage分类。

手摇式的"向下移动一点"对于SQL命令的答案来说不够具体。

相关内容

  • 没有找到相关文章

最新更新