mysql通常使用语句_Mysql 常用SQL语句集锦

基础篇

//查询时间,友好提示

$sql = "select date_format(create_time, '%Y-%m-%d') as day from table_name";

//int 时间戳类型

$sql = "select from_unixtime(create_time, '%Y-%m-%d') as day from table_name";

//一个sql返回多个总数

$sql = "select count(*) all, " ;

$sql .= " count(case when status = 1 then status end) status_1_num, ";

$sql .= " count(case when status = 2 then status end) status_2_num ";

$sql .= " from table_name";

//Update Join / Delete Join

$sql = "update table_name_1 ";

$sql .= " inner join table_name_2 on table_name_1.id = table_name_2.uid ";

$sql .= " inner join table_name_3 on table_name_3.id = table_name_1.tid ";

$sql .= " set *** = *** ";

$sql .= " where *** ";

//delete join 同上。

//替换某字段的内容的语句

$sql = "update table_name set content = REPLACE(content, 'aaa', 'bbb') ";

$sql .= " where (content like '%aaa%')";

//获取表中某字段包含某字符串的数据

$sql = "SELECT * FROM `表名` WHERE LOCATE('关键字', 字段名) ";

//获取字段中的前4位

$sql = "SELECT SUBSTRING(字段名,1,4) FROM 表名 ";

//查找表中多余的重复记录

//单个字段

$sql = "select * from 表名 where 字段名 in ";

$sql .= "(select 字段名 from 表名 group by 字段名 having count(字段名) > 1 )";

//多个字段

$sql = "select * from 表名 别名 where (别名.字段1,别名.字段2) in ";

$sql .= "(select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1 )";

//删除表中多余的重复记录(留id最小)

//单个字段

$sql = "delete from 表名 where 字段名 in ";

$sql .= "(select 字段名 from 表名 group by 字段名 having count(字段名) > 1)  ";

$sql .= "and 主键ID not in ";

$sql .= "(select min(主键ID) from 表名 group by 字段名 having count(字段名 )>1) ";

//多个字段

$sql = "delete from 表名 别名 where (别名.字段1,别名.字段2) in ";

$sql .= "(select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1) ";

$sql .= "and 主键ID not in ";

$sql .= "(select min(主键ID) from 表名 group by 字段1,字段2 having count(*)>1) ";

业务篇

连续范围问题

//创建测试表

CREATE TABLE `test_number` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`number` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '数字',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

//创建测试数据

insert into test_number values(1,1);

insert into test_number values(2,2);

insert into test_number values(3,3);

insert into test_number values(4,5);

insert into test_number values(5,7);

insert into test_number values(6,8);

insert into test_number values(7,10);

insert into test_number values(8,11);

实验目标:求数字的连续范围。

根据上面的数据,应该得到的范围。

1-3

5-5

7-8

10-11

//执行Sql

select min(number) start_range,max(number) end_range

from

(

select number,rn,number-rn diff from

(

select number,@number:=@number+1 rn from test_number,(select @number:=0) as number

) b

) c group by diff;

a950139d0020d411e73752beb4ecd37c.png

签到问题

//创建参考表(模拟数据需要用到)

CREATE TABLE `test_nums` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='参考表';

//模拟数据,插入 1-10000 连续数据.

//创建测试表

CREATE TABLE `test_sign_history` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '签到时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='签到历史表';

//创建测试数据

insert into test_sign_history(uid,create_time)

select ceil(rand()*10000),str_to_date('2016-12-11','%Y-%m-%d')+interval ceil(rand()*10000) minute

from test_nums where id<31;

//统计每天的每小时用户签到情况

select

h,

sum(case when create_time='2016-12-11' then c else 0 end) 11Sign,

sum(case when create_time='2016-12-12' then c else 0 end) 12Sign,

sum(case when create_time='2016-12-13' then c else 0 end) 13Sign,

sum(case when create_time='2016-12-14' then c else 0 end) 14Sign,

sum(case when create_time='2016-12-15' then c else 0 end) 15Sign,

sum(case when create_time='2016-12-16' then c else 0 end) 16Sign,

sum(case when create_time='2016-12-17' then c else 0 end) 17Sign

from

(

select

date_format(create_time,'%Y-%m-%d') create_time,

hour(create_time) h,

count(*) c

from test_sign_history

group by

date_format(create_time,'%Y-%m-%d'),

hour(create_time)

) a

group by h with rollup;

732e25c2c6ec820d70b23bc8e86145d7.png

//统计每天的每小时用户签到情况(当某个小时没有数据时,显示0)

select

h ,

sum(case when create_time='2016-12-11' then c else 0 end) 11Sign,

sum(case when create_time='2016-12-12' then c else 0 end) 12Sign,

sum(case when create_time='2016-12-13' then c else 0 end) 13Sign,

sum(case when create_time='2016-12-14' then c else 0 end) 14Sign,

sum(case when create_time='2016-12-15' then c else 0 end) 15Sign,

sum(case when create_time='2016-12-16' then c else 0 end) 16Sign,

sum(case when create_time='2016-12-17' then c else 0 end) 17Sign

from

(

select b.h h,c.create_time,c.c from

(

select id-1 h from test_nums where id<=24

) b

left join

(

select

date_format(create_time,'%Y-%m-%d') create_time,

hour(create_time) h,

count(*) c

from test_sign_history

group by

date_format(create_time,'%Y-%m-%d'),

hour(create_time)

) c on (b.h=c.h)

) a

group by h with rollup;

ceb826cc6255d4dba338fd191724d06a.png

//统计每天的用户签到数据和每天的增量数据

select

type,

sum(case when create_time='2016-12-11' then c else 0 end) 11Sign,

sum(case when create_time='2016-12-12' then c else 0 end) 12Sign,

sum(case when create_time='2016-12-13' then c else 0 end) 13Sign,

sum(case when create_time='2016-12-14' then c else 0 end) 14Sign,

sum(case when create_time='2016-12-15' then c else 0 end) 15Sign,

sum(case when create_time='2016-12-16' then c else 0 end) 16Sign,

sum(case when create_time='2016-12-17' then c else 0 end) 17Sign

from

(

select b.create_time,ifnull(b.c-c.c,0) c,'Increment' type from

(

select

date_format(create_time,'%Y-%m-%d') create_time,

count(*) c

from test_sign_history

group by

date_format(create_time,'%Y-%m-%d')

) b

left join

(

select

date_format(create_time,'%Y-%m-%d') create_time,

count(*) c

from test_sign_history

group by

date_format(create_time,'%Y-%m-%d')

) c on(b.create_time=c.create_time+ interval 1 day)

union all

select

date_format(create_time,'%Y-%m-%d') create_time,

count(*) c,

'Current'

from test_sign_history

group by

date_format(create_time,'%Y-%m-%d')

) a

group by type

order by case when type='Current' then 1 else 0 end desc;

6161a905ee270c5df97c8278987afd18.png

//模拟不同的用户签到了不同的天数

insert into test_sign_history(uid,create_time)

select uid,create_time + interval ceil(rand()*10) day from test_sign_history,test_nums

where test_nums.id <10 order by rand() limit 150;

//统计签到天数相同的用户数量

select

sum(case when day=1 then cn else 0 end) 1Day,

sum(case when day=2 then cn else 0 end) 2Day,

sum(case when day=3 then cn else 0 end) 3Day,

sum(case when day=4 then cn else 0 end) 4Day,

sum(case when day=5 then cn else 0 end) 5Day,

sum(case when day=6 then cn else 0 end) 6Day,

sum(case when day=7 then cn else 0 end) 7Day,

sum(case when day=8 then cn else 0 end) 8Day,

sum(case when day=9 then cn else 0 end) 9Day,

sum(case when day=10 then cn else 0 end) 10Day

from

(

select c day,count(*) cn

from

(

select uid,count(*) c from test_sign_history group by uid

) a

group by c

) b;

cb0013092120d17a259cf08daa5237a7.png

//统计每个用户的连续签到时间

select * from (

select d.*,

@ggid := @cggid,

@cggid := d.uid,

if(@ggid = @cggid, @grank := @grank + 1, @grank := 1) grank

from

(

select uid,min(c.create_time) begin_date ,max(c.create_time) end_date,count(*) count from

(

select

b.*,

@gid := @cgid,

@cgid := b.uid,

if(@gid = @cgid, @rank := @rank + 1, @rank := 1) rank,

b.diff-@rank flag from (

select

distinct

uid,

date_format(create_time,'%Y-%m-%d') create_time,

datediff(create_time,now()) diff

from test_sign_history order by uid,create_time

) b, (SELECT @gid := 1, @cgid := 1, @rank := 1) as a

) c group by uid,flag

order by uid,count(*) desc

) d,(SELECT @ggid := 1, @cggid := 1, @grank := 1) as e

)f

where grank=1;

b4bd426496764082311d9df0cd2ff20e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么你需要设计和维护一套自我移动标准?

在一个很长的调研日的休息时分&#xff0c;我在同一个客户谈一个项目&#xff0c;在这个项目中&#xff0c;我正为一个全球经济公司开发一个iOS标准。他们的第一反应是这样的&#xff1a;“什么&#xff1f;你在开发Apple iOS以外的标准&#xff1f;那还要开发什么&#xff1f;…

数据挖掘资料

https://blog.csdn.net/baimafujinji/article/details/53269040 在2006年12月召开的 IEEE 数据挖掘国际会议上&#xff08;ICDM&#xff0c; International Conference on Data Mining&#xff09;&#xff0c;与会的各位专家选出了当时的十大数据挖掘算法&#xff08; top 10 …

如何进行个人知识管理和提高自己能力?

21世纪是一个知识爆炸的世纪&#xff0c;知识爆炸是指人类创造的知识,主要是自然科学知识,在短时期内以极高的速度增长起来。是人们对当前大量出现并飞速发展的各种知识现象所进行的夸张和描述。有人综合计算,全世界的知识总量,七到十年翻一番。这就是风行全球的摩登名词的意思…

redis服务器端和客户端启动

服务器端 sudo redis-server /etc/redis/redis.conf 指定加载的配置文件 ps -ef|grep redis 查看redis服务器进程 sudo kill -9 pid 杀死redis服务器 连接特定IP的redis&#xff1a;

超级丑数

题目&#xff1a; 写一个程序来找第 n 个超级丑数。超级丑数的定义是正整数并且所有的质数因子都在所给定的一个大小为 k 的质数集合内。比如给你 4 个质数的集合 [2, 7, 13, 19], 那么 [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] 是前 12 个超级丑数。注意事项&#xff1a;…

为什么要进行个人知识管理(PKM)

21世纪是一个知识爆炸的世纪&#xff0c;知识爆炸是指人类创造的知识,主要是自然科学知识,在短时期内以极高的速度增长起来。是人们对当前大量出现并飞速发展的各种知识现象所进行的夸张和描述。有人综合计算,全世界的知识总量,七到十年翻一番。这就是风行全球的摩登名词的意思…

NFC读卡------ci522

1、NFC及卡片 NFC是近距离无线通讯技术&#xff0c;是一种非接触式识别和互联技术&#xff0c;可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC提供了一种简单、触控式的解决方案&#xff0c;可以让消费者简单直观地交换信息、访问内容与服务。 …

mysql 索引效果是否叠加_MySQL基础实用知识集合(二)

上期小编给大家汇总介绍了mysql的6个基础的知识点,下面继续给大家分享一下另外7个知识点&#xff1a;7、什么是死锁&#xff1f;怎么解决&#xff1f;死锁&#xff1a;两个或多个事务相互占用了对方的锁&#xff0c;就会一直处于等待的状态。常见的解决死锁的方法&#xff1a;(…

IP协议

IP协议只负责传送IP数据包&#xff0c;无法监视和控制网络中出现的一些问题&#xff0c;这些工作由Internet的控制协议来完成IP是T C P / I P协议族中最为核心的协议。所有的T C P、U D P、I C M P及I G M P数据都以I P数据报格式传输。它的特点如下:不可靠&#xff08;u n r e…

gitlab修改用户密码_CRM用户模块(用户密码修改)

四 密码修改1 需求分析修改当前登陆用户的登陆密码2 页面原型3 流程图 4 编写ControllerResponseBodyRequestMapping("updatePwd")public MessageModel updatePwd(HttpServletRequest request, String oldPassword, String newPassword, String confirmPassword){Mes…

third day- 01--文件操作

1 1、请分别介绍文件操作中不同的打开方式之间的区别&#xff1a;2 3 模式 含义4 r 文本只读模式5 rb 二进制模式  #这种方法&#xff0c;是用来传输或存储&#xff0c;不给人看的。6 r r 是读写模式&#xff0c;只要沾上r&#xff0c;文件必须存在7 rb …

微信小程序中form 表单提交和取值实例详解

2019独角兽企业重金招聘Python工程师标准>>> 我们知道&#xff0c;如果我们直接给 input 添加 bindinput&#xff0c;比如&#xff1a;<input bindinput"onUsernameInput" />&#xff0c;那么可以在 onUsernameInput 中直接使用 e.detail.value&…

matlab如何用代码导入文件_20+行Matlab代码实现文件扫描

最近刚好看到一篇回答&#xff0c;用阈值二值化处理图片水印&#xff0c;受到启发写此代码。阈值二值化适合处理只有黑白两色的图片&#xff0c;考虑到文件盖章&#xff0c;这里作者使用像素颜色替换及灰度值处理图片&#xff0c;进一步提高处理精度和能力。我们需要&#xff1…

启动django服务器报错raise errorclass(errno, errval) django.db.utils.InternalError

问题描述&#xff1a; 启动django服务器python manage.py runserver报错: raise errorclass(errno, errval) django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”) 原因&#xff1a;与mysql数据库…

java单例模式之线程安全问题

单例的目的是为了保证运行时Singleton类只有唯一的一个实例&#xff0c;用于一些较大开销的操作。 饿汉式&#xff08;没有线程安全问题&#xff09;: ‘ 由于使用static关键字进行了修饰&#xff0c;只能获取到一个对象&#xff0c;从而达到了单例&#xff0c;并且在Singleton…

448. Find All Numbers Disappeared in an Array 寻找有界数组[1,n]中的缺失数

&#xff3b;抄题&#xff3d;&#xff1a; Given an array of integers where 1 ≤ a[i] ≤ n (n size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it with…

Linux基本命令+Makefile

1.linux下查看进程占用cpu的情况(top)&#xff1b; 格式 top [&#xff0d;] [d delay] [q] [c] [S] [s] [i] [n] 主要参数 d&#xff1a;指定更新的间隔&#xff0c;以秒计算。q&#xff1a;没有任何延迟的更新。如果使用者有超级用户&#xff0c;则top命令将会以最高的优先…

mysql语法题_mysql数据库题语法练习

一、练习。导入下面sql执行语句/*数据导入&#xff1a;Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50624Source Host : localhostSource Database : sqlexamTarget Server Type : MySQLTarget Server Version …