MySQL GROUP BY分组取字段最大值
假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下:CREATE TABLE `tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `ip` varchar(16) NOT NULL, `login_time` datetime,&...
MySQL SQL实现上下行相加减
MySQL 上下行相加减
MySQL 预处理语句prepare、execute、deallocate的使用
MySQL官方将prepare、execute、deallocate统称为PREPARE STATEMENT。我习惯称其为【预处理语句】。其用法十分简单,举个栗子:mysql> PREPARE pr1 FROM 'SELECT ?+?';Query OK, 0 rows affected (0.01 sec)Statement preparedmysql> SET @a=1, @b=10 ;Que...
MySQL存储过程中处理数组 UDF代码分享
在存储过程中,传入的参数经常可能会有数组,而mysql没有自带处理数组的方法或函数。需求是这样的:传入参数形如:【aaa|bbb|ccc】传出参数形如:【aaa】、【bbb】、【ccc】自己写了一个自定义函数来完成上述需求:例子:mysql> select FUN_GET_ELEMENT('第一个数组|第二个数组|第三个数组', '|', -1);...
MySQL 聚合函数大全
以下内容基于MySQL 5.6及更高,大部分函数5.5也基本适用,更低版本请参考对应版本手册,其内容整理自官方。
MySQL 控制流函数
以下内容基于MySQL 5.6及更高,大部分函数5.5...
MySQL 数字函数大全
以下内容基于MySQL 5.6及更高,大部分函数5.5...
MySQL 字符串函数大全
以下内容基于MySQL 5.6及更高,低版本基本也适用,其内容整理自官方。mysql函数被分为五类,分别为:
MySQL 日期时间函数大全
以下内容基于MySQL 5.6及更高,低版本基本也适用,其内容整理自官方。mysql函数被分为五类,分别为:
MySQL int(11)及int(M)解析
默认创建int类型的字段,SHOW CREATE TABLE table_name或DESC table_name常常可以看到其默认情况为int(11)。这个int(M)很多时候都会被误解为最大范围,但是...
MySQL 五种整型数据类型的范围与区别 tinyint smallint mediumint int bigint
之前在论坛上看到一个有意思的问题,如果有一个字段的值超过bigint,会发生什么。然后就看到有人喷,说0.1秒插入一个值,将bigint设置为无符号,插入到极限需要多久,根本不可能遇到如何如何。
MySQL GROUP_CONCAT函数 将多行数据合并成一行
实际场景需求是这样的:某网站的后台管理,新建一个用户时,需要指派给其一个角色,该角色具有一定权限:比如,“销售专员”这个角色有A,B,C的
MySQL DELETE 表别名问题
版本是mysql 5.6(5.5在这个问题上也一样,已测试)随手做一个实验(随手拿的一台机子,创表居然0.2s)mysql> USE test; Database changedmysql> CREATE TABLE test(id int);Query OK, 0 rows affected (0...
MySQL 存储过程参数IN OUT INOUT对比
mysql> use test; IN 参数:
MySQL 缺失范围问题
本例子运用的是range_problem中的表和数据 create table range_problem( a int(10) unsigned not null, primary key (a));insert into range_problem values(1);insert int...
MySQL 最小缺失值问题
首先通过创建表和插入构建一个测试环境create table missed_minimum(a int unsigned primary key,b char(1) not null);insert into missed_minimum select 1,'z';insert into missed_minimum select 2,'x';insert into missed_minimum select 3,'a'...
MySQL 利用Pivoting格式化做报表
此处用到了Pivoting技术注:Pivoting技术是指一种可以把行转换为列的技术,在Pivoting的执行过程中可能会用到聚合。这里讨论的都是静态Pivoting查询,即用户需要提前知道旋转的属性列的值,对于动态Pivoting,需要动态地构造查询字符串。并在日志结尾时附录Unpivoting技术注:Unpivoting可以看作是pivoting的反向操作...
MySQL 除法问题
此处用到了Pivoting技术注:Pivoting技术是指一种可以把行转换为列的技术,在Pivoting的执行过程中可能会用到聚合。这里讨论的都是静态Pivoting查询,即用户需要提前知道旋转的属性列的值,对于动态Pivoting,需要动态地构造查询字符串。关系除法问题的解决方案:(当除数集合中的元素数量较小时,Pivoting可以用...
MySQL 处理行号
首先创建一个测试表row_number:create table row_number(a char(1));再插入一些测试数据:insert into row_number select 'X';insert into row_number select 'X';insert into row_number select 'X';insert into row_number select 'Y';inse...
MySQL range问题
首先创建这样一个表create table range_problem( a int(10) unsigned not null, primary key (a));插入以下测试数据insert into range_problem values(1);insert into range_problem values(2);in...