0
点赞
收藏
分享

微信扫一扫

mysql一些语法(持续更新)一些实用的MySql方法(持续更新)


我们在开发项目的时候,其实就是处理数据库,多线程。所以mysql需要了解很多。

可参考:

一些实用的MySql方法(持续更新)

1:DATE_FORMAT语法。

 我们在mysql查询的时候。有的时候根据设置不同的时间格式,如你的create_time是“2020-11-26 10:10:10”改成“2020-11-26”这个时候,我们使用

select DATE_FORMAT(create_time, '%Y-%m-%d') from 表名

这样就可以了。如果我们根据小时来查询,如需要查询11:00 ,12:00,13:00这个小时维度。

DATE_FORMAT(create_time, '%H:00')

如果是年月日时分秒的话

DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')

特别说明的是:H表示24小时制度,h是12小时制度。   分钟是i  不是m

2:DIV语法 和 ceil语法。

我们在mysql查询的时候,有的时候需要除以一个固定的数。比如金额(amout)除以50  

amout div 50

即可。

如果向上取整。则直接执行。

ceil(amout div 50)

3:COALESCE()

这个函数主要用来进行空值处理

如:COALESCE(字段A,0)

如果字段A是空值,则为0 

4:group by 和order by以及max结合实现查找某个小时最大值

我们在查询完数据后,还需要排序下,这个时候就我们就需要使用group by 和order  by这样就能取处group by 中的最大值并且排序

SELECT
	x.time AS time,
	x.hourTime AS hourTime,
	Max(x.count) AS count
FROM
	(
		SELECT
			sum(count) AS count,
			DATE_FORMAT(
				create_time,
				'%Y-%m-%d %H:00'
			) AS time,
			DATE_FORMAT(create_time, '%H:00') AS hourTime
		FROM
			order_main
		WHERE
			pay_state = 1
		AND date_sub(curdate(), INTERVAL 10 DAY) <= create_time
		GROUP BY
			time
		ORDER BY
			count DESC
	) AS x
GROUP BY
	hourTime

首先通过group by 实现按照(年月日时)分类然后按照order by实现大小排序,最后在外层在根据时间(小时)分类,并且通过Max()取最大值。

5:查询某个数据出现多次的情况(group by 和having)。

我们在数据库查找数据某一个数据出现多条,需要使用group by 和 having一起使用。

select page_name from page_record group by page_name HAVING count(page_name)>=2

6:CAST函数

有的时候我们在查询sql的时候需要将将原有的数据格式切换成其他的类型。

Cast(字段名 as 转换的类型 ),其中类型可以为:

CHAR[(N)] 字符型 
DATE  日期型
DATETIME  日期和时间型
DECIMAL  float型
SIGNED  int
TIME  时间型

SELECT
	cast(id AS SIGNED) AS id,
	cast(phone_number as CHAR) as phone_number,
cast(MAX(promoter_code + 1) AS CHAR) AS maxCode
FROM
	my table


举报

相关推荐

0 条评论