Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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_Sql Order By - Fatal编程技术网

Mysql按混合值排序,然后按其他值排序

Mysql按混合值排序,然后按其他值排序,mysql,sql-order-by,Mysql,Sql Order By,我在数据库中有一列包含以下值之一:1 2 3 4 我想按照此值按以下方式订购: mix between 1 & 3 then 2 then 4. 表:服务 柱: 名称、服务类型 服务类型可以是1 2 3 4,我希望显示订单服务1和3,然后是2,然后是4 有什么想法吗?? 善良的问候可能是这样的,使用case/when: create table t7 ( name varchar(20) not null, aNum int not null ); insert t7

我在数据库中有一列包含以下值之一:1 2 3 4

我想按照此值按以下方式订购:

mix between 1 & 3 then 2 then 4.
表:服务
柱: 名称、服务类型
服务类型可以是1 2 3 4,我希望显示订单服务1和3,然后是2,然后是4

有什么想法吗??

善良的问候

可能是这样的,使用
case/when

create table t7
(   name varchar(20) not null,
    aNum int not null
);
insert t7 (name,aNum) values ('a',2),('z',3),('n',3),('q',4),('t',1),
('q',2),('w',3),('e',3),('r',4),('t',1),('y',2);

select name,aNum, 
CASE WHEN aNum in (1,3) THEN 1 else 2 end as theOrder 
from t7 
order by theOrder;
+------+------+----------+
| name | aNum | theOrder |
+------+------+----------+
| z    |    3 |        1 |
| n    |    3 |        1 |
| t    |    1 |        1 |
| t    |    1 |        1 |
| w    |    3 |        1 |
| e    |    3 |        1 |
| a    |    2 |        2 |
| r    |    4 |        2 |
| q    |    2 |        2 |
| q    |    4 |        2 |
| y    |    2 |        2 |
+------+------+----------+
如果
mix
不够特别,那么就选择

select name,aNum from
( select name,aNum from t7 where aNum in (1,3) order by rand()) x1
union all
select name,aNum from
( select name,aNum from t7 where aNum in (2,4) order by rand()) x2

这是完全不清楚的。您需要提供表名、列名和更多数据/结果示例。否则这篇文章可能会被删除。