高级mysql查询,它对结果集上的特定记录进行排序,而不考虑其默认排序?
我有一个查询,它实际上使用ORDERBY子句进行排序。我有一张像下面这样的桌子高级mysql查询,它对结果集上的特定记录进行排序,而不考虑其默认排序?,mysql,sql,database,sorting,Mysql,Sql,Database,Sorting,我有一个查询,它实际上使用ORDERBY子句进行排序。我有一张像下面这样的桌子 user_id user_name user_age user_state user_points 1 Rakul 30 CA 56 2 Naydee 29 NY 144 3 Jeet 40 NJ 43 ...
user_id user_name user_age user_state user_points
1 Rakul 30 CA 56
2 Naydee 29 NY 144
3 Jeet 40 NJ 43
.....
我有以下疑问
select * from users where user_state = 'NY' order by user_points desc limit 50;
这给了我一张50人的得分最多的名单。我想对那些知道身份证的人给予最少的优先权。如果我没有足够的50条记录,那么这些id应该排在列表的最后。我不想让用户2和3出现在列表的顶部,即使他们有更高的分数。。。这些人应该排在查询列表的最后一位。是否有任何方法可以在不考虑查询排序的情况下将特定记录推到结果集中的最后一个记录?如果您想将特定记录(如用户id=2和3)向下移动到列表中;然后,您可以运行以下查询:
mysql> select *,IF(user_id=2 or user_id=3,0,1) as list_order from users where user_state = 'NY' order by list_order desc, user_points desc limit 50;
如果要将特定记录(如user_id=2和3)下移到列表中;然后,您可以运行以下查询:
mysql> select *,IF(user_id=2 or user_id=3,0,1) as list_order from users where user_state = 'NY' order by list_order desc, user_points desc limit 50;
编辑:由user\u id
更改id
,并在外按
进行更正(很抱歉)
在内部选择:通过使用此
案例
计算,您要做的是确保ID等于2和3的记录是“重要的”(首先按order By排序)。只有在分数相关之后,其他人收到1,而其他人收到2作为订单值
在外部选择:ID为2和3的记录接收2作为订单值,而其余记录接收1。因此,无论其“违约”如何,它们都会走到最后 给你一把小提琴 编辑:由
user\u id
更改id
,并在外按
进行更正(很抱歉)
在内部选择:通过使用此
案例
计算,您要做的是确保ID等于2和3的记录是“重要的”(首先按order By排序)。只有在分数相关之后,其他人收到1,而其他人收到2作为订单值
在外部选择:ID为2和3的记录接收2作为订单值,而其余记录接收1。因此,无论其“违约”如何,它们都会走到最后
这是您的小提琴谢谢您的回复。。。但我希望id的排序过于基于用户点。。。我的意思是,如果ID 2,3,0,1的点为40,80,20,30,那么在结果集中,这些ID必须排在最后,并且顺序为3,2,1,0,代表80,40,30,20点……这些ID也将根据给定的查询进行排序。在这里查看演示:对不起。。。刚刚检查过。。。我实际上需要特定的ID,顺序和我提到的一样。。。ID必须出现在结果集的最后一个,但按照我提到的顺序。。。我是说。。。如果我说。。。user_id=2或user_id=1,则在结果集中,这应反映相同的。。。用户id_2必须位于用户id_1之前,而与用户点无关。很抱歉我第一次评论中的混乱。。。非常感谢您的帮助…在这种情况下,您应该使用类似以下内容:mysql>SELECT*,当用户\u id=2时使用“0”,当用户\u id=1时使用“1”,否则使用“2”作为用户的列表顺序结束,其中用户\u state='NY'按列表顺序asc,用户\u points desc limit 50;不。。。我得到了这个语法错误。。。选择*,如果(用户id=2或用户id=3,0,1)作为列表顺序谢谢您的回复。。。但我希望id的排序过于基于用户点。。。我的意思是,如果ID 2,3,0,1的点为40,80,20,30,那么在结果集中,这些ID必须排在最后,并且顺序为3,2,1,0,代表80,40,30,20点……这些ID也将根据给定的查询进行排序。在这里查看演示:对不起。。。刚刚检查过。。。我实际上需要特定的ID,顺序和我提到的一样。。。ID必须出现在结果集的最后一个,但按照我提到的顺序。。。我是说。。。如果我说。。。user_id=2或user_id=1,则在结果集中,这应反映相同的。。。用户id_2必须位于用户id_1之前,而与用户点无关。很抱歉我第一次评论中的混乱。。。非常感谢您的帮助…在这种情况下,您应该使用类似以下内容:mysql>SELECT*,当用户\u id=2时使用“0”,当用户\u id=1时使用“1”,否则使用“2”作为用户的列表顺序结束,其中用户\u state='NY'按列表顺序asc,用户\u points desc limit 50;不。。。我得到了这个语法错误。。。选择*,如果(用户id=2或用户id=3,0,1)作为列表顺序谢谢您的帮助。。。但这对我不起作用。你能告诉我什么情况吗。。。其他的你要点菜吗?我希望我现在做了替补。谢谢你,先生。但是这个解决方案对我不起作用。。。我单独查询资料,并在php中合并以完成任务。。。谢谢你帮助我。谢谢你帮助我。。。但这对我不起作用。你能告诉我什么情况吗。。。其他的你要点菜吗?我希望我现在做了替补。谢谢你,先生。但是这个解决方案对我不起作用。。。我单独查询资料,并在php中合并以完成任务。。。谢谢你帮助我。