题目:
有如下一张表Team,里面有Name和Person两个字段,里面的数据如下该如何写这个查询语句?注意:直接对Name进行Order by会得到意想不到的结果!
参考答案:
数据库版本:Server version: 8.0.20 MySQL Community Server - GPL
建表语句
create table dailytest_20200604
(
name nvarchar(20),
person int
);
数据准备
insert into dailytest_20200604 values ('二队',15);
insert into dailytest_20200604 values ('三队',14);
insert into dailytest_20200604 values ('一队',18);
insert into dailytest_20200604 values ('七队',11);
insert into dailytest_20200604 values ('九队',12);
insert into dailytest_20200604 values ('四队',20);
查询逻辑
select
name,
person
from (
select
name,
instr('一二三四五六七八九', firstvalue) valueorder,
person
from (select
name,
substr(name, 1, 1) as firstvalue,
person
from dailytest_20200604) A) B
order by B.valueorder;
附:
题目来源:https://mp.weixin.qq.com/s/3_gAuYi09CjD_XJwOx1uaw
MySQL 的instr函数:https://www.cnblogs.com/mr-wuxiansheng/p/6531221.html
网友评论