Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按顺序指定顺序_Mysql - Fatal编程技术网

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')