要对分组字段进行ORDER BY,请将ORDER BY CASE与一起使用IN()
。CASE评估不同的条件,而ORDER BY则按升序或降序对值进行排序。MySQLIN()
用于查找匹配项。
让我们首先创建一个表-
mysql> create table DemoTable ( Value varchar(40) );
使用插入命令在表中插入一些记录-
mysql> insert into DemoTable values('John'); mysql> insert into DemoTable values('100&101'); mysql> insert into DemoTable values('Sam'); mysql> insert into DemoTable values('90'); mysql> insert into DemoTable values('Mike45');
使用select语句显示表中的所有记录-
mysql> select *from DemoTable;
这将产生以下输出-
+---------+ | Value | +---------+ | John | | 100&101 | | Sam | | 90 | | Mike45 | +---------+ 5 rows in set (0.00 sec)
以下是按分组字段排序的查询-
mysql> select *from DemoTable order by case when Value IN('John','Sam','Mike45') then 100 when Value='90' then 101 when Value='100&101' then 102 else 103 end;
这将产生以下输出-
+---------+ | Value | +---------+ | John | | Sam | | Mike45 | | 90 | | 100&101 | +---------+ 5 rows in set (0.03 sec)