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.pswp.cn/news/452978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452978.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么你需要設計和維護一套自我移動標準?

在一個很長的調研日的休息時分&#xff0c;我在同一個客戶談一個項目&#xff0c;在這個項目中&#xff0c;我正為一個全球經濟公司開發一個iOS標準。他們的第一反應是這樣的&#xff1a;“什么&#xff1f;你在開發Apple iOS以外的標準&#xff1f;那還要開發什么&#xff1f;…

JS 小知識點匯總

1.offsetWidth & width A:因為. 1.offsetWidth是只讀屬性&#xff0c;而style.width是可讀寫得。2.offsetWidth返回的是一個整數&#xff0c;style.width返回的是一個字符串,并且帶有單位&#xff1b;**3.style.width只能返回以style方式定義的內部樣式的width屬性值。4.of…

django-redis中redis.conf配置詳細說明

參考文獻&#xff1a;https://blog.csdn.net/ljphilp/article/details/52934933 感謝樓主分享&#xff01;

初識Mysql(一)

1 搭建數據庫服務器2 MYSQL數據類型3 修改表結構1 搭建數據庫服務器1.1 存在mariadb時&#xff1a;#systemctl status mariadb#systemctl stop mariadb#rpm -e --nodeps mariadb-libs #不依賴關系卸載#rm -rf /etc/my.cnf#rm -rf /var/lib/mysql/*1.2 新安裝時[rootser51 ~]# …

數據挖掘資料

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;

hive表移到mysql_如何將Hive數據表移動到MySql?

我想知道如何將日期從Hive轉移到MySQL&#xff1f;我已經看到了如何將hive數據移動到Amazon DynamoDB而不是像MySQL這樣的RDBMS的示例.以下是我在DynamoDB中看到的示例&#xff1a;CREATE EXTERNAL TABLE tbl1 ( name string, location string )STORED BY org.apache.hadoop.hi…

賬簿與平衡段關聯表

gl_ledger_norm_seg_vals轉載于:https://www.cnblogs.com/lizicheng/p/8817982.html

超級丑數

題目&#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;知識爆炸是指人類創造的知識,主要是自然科學知識,在短時期內以極高的速度增長起來。是人們對當前大量出現并飛速發展的各種知識現象所進行的夸張和描述。有人綜合計算,全世界的知識總量,七到十年翻一番。這就是風行全球的摩登名詞的意思…

Python中“if __name__=='__main__':”理解與總結

具體詳解參考文獻&#xff1a;https://www.cnblogs.com/chenhuabin/p/10118199.html

python中列表如何比較大小_如何比較python中的列表/列表?

所以你想要兩個項目列表之間的區別。 first_list = [[Test.doc, 1a1a1a, 1111], [Test2.doc, 2b2b2b, 2222], [Test3.doc, 3c3c3c, 3333]] secnd_list = [[Test.doc, 1a1a1a, 1111], [Test2.doc, 2b2b2b, 2222], [Test3.doc, 8p8p8p, 9999], [Test4.doc, 4d4d4d, 4444]] 首先,…

NFC讀卡------ci522

1、NFC及卡片 NFC是近距離無線通訊技術&#xff0c;是一種非接觸式識別和互聯技術&#xff0c;可以在移動設備、消費類電子產品、PC和智能控件工具間進行近距離無線通信。NFC提供了一種簡單、觸控式的解決方案&#xff0c;可以讓消費者簡單直觀地交換信息、訪問內容與服務。 …

java基礎面試題:說說和的區別

&與&&都是邏輯與 不同的是&左右兩邊的判斷都要進行&#xff0c;而&&是短路與&#xff0c;當&&左邊條件為假則不用再判斷右邊條件&#xff0c;所以效率更高 例如&#xff0c;對于if(str ! null && !str.equals(“”))表達式&#xff0c…

codeforce 457DIV2 C題

題意 你需要構造一個n個點m條邊的無向有權圖&#xff0c;要求這個圖的MST中邊權的和與從1到n的最短路長度都為素數 分析 可以想到這樣一種貪心&#xff0c;在i到i1直接連一條邊&#xff0c;這樣最短路和MST都會是同樣的一些邊。只要保證他們的和為素數就好&#xff0c;對于其他…

何必言精通——十年雜感

30虛歲了。這一、兩年&#xff0c;有事沒事之中口中經常念著李商隱那首《錦瑟》&#xff1a; 錦瑟無端五十弦&#xff0c;一弦一柱思華年。莊生曉夢迷蝴蝶&#xff1b;望帝春心托杜鵑。滄海月明珠有淚&#xff1b;藍田日暖玉生煙。此情可待成追憶&#xff0c;只是當時已惘然。…

mysql 索引效果是否疊加_MySQL基礎實用知識集合(二)

上期小編給大家匯總介紹了mysql的6個基礎的知識點,下面繼續給大家分享一下另外7個知識點&#xff1a;7、什么是死鎖&#xff1f;怎么解決&#xff1f;死鎖&#xff1a;兩個或多個事務相互占用了對方的鎖&#xff0c;就會一直處于等待的狀態。常見的解決死鎖的方法&#xff1a;(…