【发布时间】:2023-04-11 09:13:01
【问题描述】:
下面显示的是我需要用这三列order by 的查询。这适用于复杂的搜索列表。如果我使用其中之一,它会完美运行。但处理多个时,无法正确排序。
编辑
其实我需要的是,优质唱片必须排在第一位,并且有更多的收藏夹,而且精英客户有更多的优先权。 这些都是有条件的
1) 首先会有更多的收藏夹
2) 但会考虑保费
3) 如果basic有5个收藏,它不会推到顶部,basic优先级小
4) 精英也有一些好的优先级
SELECT
`Driver`.`id` ,
`Driver`.`login_id` ,
`Login`.`profile_type`,
.................
ORDER BY `fav_count`,
FIELD( `Login`.`profile_type` , "premium", "basic" ) ,
`Driver`.`is_elite` ASC
我预期的示例结果
is_elite| profile_type | fav_count
________|_____________________|____________
1 | premium | 4
1 | premium | 3
1 | premium | 2
1 | premium | 1
0 | basic | 5
0 | basic | 0
请给我建议。谢谢
【问题讨论】:
-
请让您的问题更具可读性。
-
大家好,我已经编辑了我的问题
-
我可以看到至少 10 种不同的排序,它们的结果与您的样品相同。请澄清更多数据,在
profile_type和/或is_elite列中具有相同/不同的数据。 -
再次编辑问题,请阅读所有 3 个链接在一起
-
让我问几个问题来帮助澄清...高级配置文件总是精英吗?如果不是,请在您的示例中添加一行,说明在不是这种情况下的排序。其次,“fav_count”实际上是计数还是排名?我不确定这是否重要,因为“fav_count”似乎是您最不重要的排序列。