以下显示的是我需要按排序这三列的查询。这适用于复杂的搜索列表。如果我使用其中一个,它的效果非常好。但处理不止一个,它没有正确排序。
修改
实际上我需要的是,高级记录必须在最初的位置以及更多的收藏,并且精英客户也更优先。 这些都有条件地起作用
1)首先会有更多收藏
2)但是会考虑保费
3)如果基本将有5个收藏夹,它将不会推到顶部,基本具有小优先级
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
请告诉我。感谢
答案 0 :(得分:4)
如果您想要列出的输出,则需要重新排序ORDER BY中的值:
ORDER BY `Driver`.`is_elite` DESC, FIELD( `Login`.`profile_type` , "premium", "basic" ) DESC, `fav_count` DESC
注意:您还需要在所有排序列上进行降序(DESC)。它们中的每一个都被从大到小排序。
答案 1 :(得分:3)
不确定您的问题,但这会给出您在示例中显示的顺序。
order by profile_type desc, fav_count desc
答案 2 :(得分:1)
按以下方式进行ORDER BY:
ORDER BY `table`.`is_elite`, `table`.`profile_type`, `table`.`fav_count` DESC
这将以您期望的方式排序(据我所知,您可以看到)。
答案 3 :(得分:0)
从您希望使用的示例结果中看起来:
ORDER BY FIELD( `Login`.`profile_type` , "premium", "basic" ), `fav_count` DESC, `Driver`.`is_elite` ASC
但这充其量只是猜测,你的问题措辞不是很好。