Mysql 按顺序指定顺序
这是一个简单的问题,但我已经在谷歌上搜索了很长时间,但没有结果Mysql 按顺序指定顺序,mysql,Mysql,这是一个简单的问题,但我已经在谷歌上搜索了很长时间,但没有结果 SELECT * FROM `target` WHERE `week_id`=23 and `ini_id`=2 ORDER BY `region_id` 当我订购此查询时,它在ASC或DESC中。 我可以为区域id指定一个序列,如5,6,7,1,2,3,4吗?有两种方法可以做到这一点: 按计算顺序订购 您可以按顺序执行,但要使用计算值,以便获得所需的顺序 例如: select * from data order by (reg
SELECT * FROM `target` WHERE `week_id`=23
and `ini_id`=2
ORDER BY `region_id`
当我订购此查询时,它在ASC或DESC中。
我可以为区域id指定一个序列,如5,6,7,1,2,3,4吗?有两种方法可以做到这一点:
按计算顺序订购
您可以按顺序执行,但要使用计算值,以便获得所需的顺序
例如:
select * from data order by (region_id+5)%10;
SQL Fiddle:
使用联合
SQL FIDLE:不是直接的,不是,但是您可以使用表达式按照规范d获得排序的结果集,例如:
ORDER BY CASE WHEN region_id IN (5,6,7) THEN 1 ELSE 2 END, region_id
这个CASE表达式从region_id派生一个值。因此,region_id为5、6或7的行被赋值为1,而所有其他行被赋值为2。当我们按此顺序订购时,所有5,6,7区域id行都排在第一位,然后是其他所有行
下一步是按区域id排序。您可以使用字段:
SELECT *
FROM `target`
WHERE `week_id`= 23
and `ini_id`= 2
ORDER BY FIELD(`region_id`,5,6,7,1,2,3,4)
您应该能够使用:
5,6,7,1,2,3,4基于什么?这只是一个随机顺序吗?不,但对于该顺序,您可以使用union或id+3%8@user2300435-np,很高兴我能帮忙!注意:除1到7之外的任何值都将在5之前排序。如果OP计划继续升序,但从最大值到最小值的更改除外-他们也可以使用:按区域从数据顺序选择*id+5%10;注:除1至7以外的任何值将在5之前订购。
SELECT *
FROM `target`
WHERE `week_id`= 23
and `ini_id`= 2
ORDER BY FIELD(`region_id`,5,6,7,1,2,3,4)
SELECT *
FROM `target`
WHERE `week_id`=23
and `ini_id`=2
ORDER BY FIND_IN_SET(`region_id`, '5,6,7,1,2,3,4')