专栏首页IT探索mysql用法进阶

mysql用法进阶

1.按中文拼音排序:

表中中文为utf8编码,先转成gbk。

select name from table_name order by convert(name using gbk) asc

2.多行转多列:

参考文献:http://www.cnblogs.com/small8/p/6211009.html

例如要行转列的字段为subject(学科),要赋值的字段score(成绩),为可以通过如下方式转换:

select  name,
MAX(CASE subject when '语文' THEN score ELSE 0 END) '语文',
           MAX(CASE subject when '数学' THEN score ELSE 0 END) '数学',
           MAX(CASE subject when '英语' THEN score ELSE 0 END) '英语'
from exam_result
group by name

3.分组内编序号

题目:假设表table_1的字段为group_name,log_time,field_name1,field_name2。需求是想取每个group_name中log_time最小的记录。

实现方法:用变量记录上次的分组的值,如果相同,则计数+1,否则重新计数

SQL如下:

select group_name,log_time,field_name1
from
(
select group_name,log_time,field_name1, 
(@index:=CASE WHEN @last_group_name=group_name THEN @index+1 ELSE 1 END) record_index,(@last_group_name=group_name) last_group_name 
from 
(
select * 
from table_1 
order by group_name,log_time
)A,
(
select @index:=1,@last_group_name=''
)B
)C where record_index=1
4.生成序列
参考文献:http://yuanding.us/miscellany/4806/
例如生成上周的日期序列:
select sequence_date
from 
(
select subdate(curdate(),t.i) sequence_date
from 
(
select 1 i union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12 union select 13 union select 14
)t
)date_list
where yearweek(sequence_date,1)=yearweek(DATE_SUB(now(),INTERVAL 7 DAY),1) 
order by sequence_date

注意:判断上周日期的地方按下面写才不会有跨年的BUG:

yearweek(sequence_date,1)=yearweek(DATE_SUB(now(),INTERVAL 7 DAY),1) 

5.按分隔符取子串

例如,原始字符串格式如下:

1.2.3.456

目标是取出1.2.3

实现方式: substring_index('2.3.0.456','.',3)

6.多个select结果拼接:

select  * from a
union select * from b

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • git使用笔记

    git config --global user.email "email_address"

    用户1396155
  • ld-linux.so.2

    /lib/ld-linux.so.2以及它的64位版本/lib64/ld-linux-x86-64.so.2虽然看起来是共享库文件,但实际上他们可以独立运行。他...

    用户1396155
  • Intelli IDEA及maven使用笔记

    参考:http://blog.csdn.net/zx110503/article/details/78734428

    用户1396155
  • DIY接口测试工具

    最近在写Android连接服务器这一块,发现测试接口有点麻烦,便想着到网上找一找接口测试工具,找来找去我都不太满意。有些太精致,导致整个工具体积过大,打开要等好...

    wangweijun
  • 【测试左移专栏】用 Powermock 和 Mockito 来做安卓单元测试

    在计算机编程中,单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。

    腾讯移动品质中心TMQ
  • 【Flutter 专题】76 图解基本 TabBar 标签导航栏 (二)

    和尚刚刚学习了 TabBar 标签导航栏的使用,其中对于标签指示器 indicator 的使用较少;和尚今天尝试一下自定义标签指示器;

    阿策
  • python接口自动化(四)--接口测试工具介绍(详解)

      “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识。那么接下来让我们看看接口测试的工具有哪些。 目前,市场上有很多支持接口测试...

    北京-宏哥
  • Spring BeanFactory 容器

    BeanFactory简称bean工厂,是整个spring的核心父类,也是IOC容器或对象的工厂,类是:org.springframework.beans.fa...

    逍遥壮士
  • 你真的会高效的在GitHub搜索开源项目吗?

    GitHub的流行, GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银...

    java思维导图
  • 你真的会高效的在GitHub搜索开源项目吗?

    GitHub的流行, GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银...

    纯洁的微笑

扫码关注云+社区

领取腾讯云代金券