要实现IN()
自定义排序,请使用ORDER BY CASE。
让我们首先创建一个表-
mysql> create table DemoTable752 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(100) );
使用插入命令在表中插入一些记录-
mysql> insert into DemoTable752(Name) values('John'); mysql> insert into DemoTable752(Name) values('Carol'); mysql> insert into DemoTable752(Name) values('Bob'); mysql> insert into DemoTable752(Name) values('Mike'); mysql> insert into DemoTable752(Name) values('Sam'); mysql> insert into DemoTable752(Name) values('Adam'); mysql> insert into DemoTable752(Name) values('Chris');
使用select语句显示表中的所有记录-
mysql> select *from DemoTable752;
这将产生以下输出-
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Mike | | 5 | Sam | | 6 | Adam | | 7 | Chris | +----+-------+ 7 rows in set (0.00 sec)
以下是使用自定义值排序的查询-
mysql> select *from DemoTable752 order by case when Id IN (1,2,3) then 1 else Id END, Name;
这将产生以下输出-
+----+-------+ | Id | Name | +----+-------+ | 3 | Bob | | 2 | Carol | | 1 | John | | 4 | Mike | | 5 | Sam | | 6 | Adam | | 7 | Chris | +----+-------+ 7 rows in set (0.00 sec)