美文网首页
SQL每日一题(2020-06-04)

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

作者: 扎西的德勒 | 来源:发表于2020-06-08 09:07 被阅读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

    相关文章

      网友评论

          本文标题:SQL每日一题(2020-06-04)

          本文链接:https://www.haomeiwen.com/subject/ocxgzhtx.html