SQL每日一题(2020-06-04)

2020-06-08  本文已影响0人  扎西的德勒

题目:

有如下一张表Team,里面有Name和Person两个字段,里面的数据如下 image 希望按中文队名进行排序,得到的结果如下: image

该如何写这个查询语句?注意:直接对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

上一篇 下一篇

猜你喜欢

热点阅读