博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 存储过程常用SQL语句收集
阅读量:7090 次
发布时间:2019-06-28

本文共 3268 字,大约阅读时间需要 10 分钟。

1,select curdate()  /*2016-10-08*/

2,select date_sub(curdate(), INTERVAL 6 DAY) /*2016-10-02*/

3,case when then else 拼接条件查询:

WHERE				(CASE  WHEN IFNULL(@belongCity,'0')='0' OR @belongCity=''  THEN  1 ELSE               CAST(LOCATE(@belongCity,worker_order.belong_city) AS SIGNED )               END)=1   AND	(CASE  WHEN IFNULL(@energyStation,'0')='0'  THEN  1 ELSE               CAST(LOCATE(@energyStation,worker_order.repository_id) AS SIGNED )               END)=1 AND	(CASE  WHEN IFNULL(@serviceStatioin,'0')='0'  THEN  1 ELSE               CAST(LOCATE(@serviceStatioin,worker_order.station_id) AS SIGNED )               END)=1 AND				DATE_FORMAT(worker_order.create_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(cast(@beginDateTime as datetime), '%Y-%m-%d') and DATE_FORMAT(cast(@endDateTime as datetime), '%Y-%m-%d')GROUP BY DATE_FORMAT(worker_order.create_time,'%Y-%m-%d');

或者是这种:

WHERE		LOCATE((CASE  WHEN IFNULL(@belongCity,'0')='0' OR @belongCity=''  THEN worker_order.belong_city ELSE  @belongCity END),worker_order.belong_city)>0AND		  LOCATE((CASE  WHEN IFNULL(@energyStation,'0')='0'  THEN  worker_order.repository_id ELSE   @energyStation END),worker_order.repository_id)>0AND	  LOCATE((CASE  WHEN IFNULL(@serviceStatioin,'0')='0'  THEN  worker_order.station_id ELSE  @serviceStatioin END),worker_order.station_id)>0AND		DATE_FORMAT(worker_order.create_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(cast(@beginDateTime as datetime), '%Y-%m-%d') and DATE_FORMAT(cast(@endDateTime as datetime), '%Y-%m-%d')GROUP BY DATE_FORMAT(worker_order.create_time,'%Y-%m-%d');

4,拼接starttime和endtime:

set @beginDateTime=(										CASE										WHEN ISNULL(beginDateTime) THEN											date_sub(curdate(), INTERVAL 6 DAY)										ELSE											DATE_FORMAT(beginDateTime,'%Y-%m-%d')										END									); /*起始时间*/set @endDateTime=(										CASE										WHEN ISNULL(endDateTime) THEN											curdate()										ELSE											DATE_FORMAT(endDateTime,'%Y-%m-%d')										END									); /*结束时间*/

5,创建存储过程及调用存储过程:

DROP PROCEDURE IF EXISTS Pro_query_work_order_report;CREATE PROCEDURE Pro_query_work_order_report (	IN cityCode varchar(32),/*城市code*/	IN energyStation INT,/*能源站code*/	IN serviceStatioin INT,/*网点code*/	IN beginDateTime datetime,/*开始时间*/	IN endDateTime datetime/*结束时间*/)BEGINSET @belongCity = cityCode;/*所属城市code*/set @energyStation=energyStation; /*能源站code*/set @serviceStatioin=serviceStatioin; /*站点code*/set @beginDateTime=(										CASE										WHEN ISNULL(beginDateTime) THEN											date_sub(curdate(), INTERVAL 6 DAY)										ELSE											DATE_FORMAT(beginDateTime,'%Y-%m-%d')										END									); /*起始时间*/set @endDateTime=(										CASE										WHEN ISNULL(endDateTime) THEN											curdate()										ELSE											DATE_FORMAT(endDateTime,'%Y-%m-%d')										END									); /*结束时间*/select 	DATE_FORMAT(worker_order.create_time,'%Y-%m-%d') as create_time,/*创建时间*/	(	select count(0) 		from biz_work_order tmp 		where 		DATE_FORMAT(tmp.create_time,'%Y-%m-%d')=DATE_FORMAT(worker_order.create_time,'%Y-%m-%d')		or (tmp.create_time

6,调用:(mysql 使用call进行调用,且不支持默认参数;sql server 使用exec进行调用,支持默认参数,有默认值的参数可以不传)

call Pro_query_work_order_report('50010',NULL,270,date_sub(curdate(), INTERVAL 6 DAY),curdate())

发现mysql怎么数据量大了,还没有sql server好用。。。难道是我的幻觉么。。

转载地址:http://ypbql.baihongyu.com/

你可能感兴趣的文章
雨林木风GhostXP_SP3装机版YN11.6_2011.06更新
查看>>
我的友情链接
查看>>
vim8.0 不能用鼠标
查看>>
OpenGL进阶(十) - obj文件的导入
查看>>
剑指XX游戏(八) - 腾讯2013校园招聘技术类笔试题详解
查看>>
docker 添加基础命令
查看>>
arm7上搭建boa并进行测试cgi+html
查看>>
iptables/netfiles基本使用
查看>>
angularJS拍照
查看>>
HTML5接入与OC交互
查看>>
错误整理:No plugin found for prefix 'jetty' in the....
查看>>
端口号简介
查看>>
JCreator中不能引入servlet包的解决办法
查看>>
mysql root账户被删除
查看>>
将CentOS设置为用光盘做yum源
查看>>
终于用上了比较完美的lion 10.7.3
查看>>
【CentOS 7笔记47】,rsync文件同步工具#171205
查看>>
word2007设置标题自动编号
查看>>
Ubuntu添加自定义快捷方式
查看>>
mysql 基本操作
查看>>