Blogger Information
Blog 42
fans 3
comment 2
visits 93606
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQL常用查询
Whitney的博客
Original
2021 people have browsed it

1、使用MySQL内部函数GROUP_CONCAT,FIND_IN_SET查找;

假设用户收藏有很多商品,在用户表中以用小短杠连接多个商品id表示,如下图:

1.png

若是想获取 用户名 商品1,商品2,商品3 这种格式的话可以采取下列操作方法:

SELECT
	u.name,
	(
		SELECT
			GROUP_CONCAT(g.goods_name)
		FROM
			goods AS g
		WHERE
			FIND_IN_SET(
				g.id,
				REPLACE (u.collect_goods_id, '-', ',')
			)
	) AS collect_goods_name
FROM
	`user` u

执行结果如下图:

2.png

注意:① 本例只用于解释GROUP_CONCAT,FIND_IN_SET的用法,不要纠结于表能不能这样建,字段能不能这样设置,杠精儿们请远离。

② REPLACE的作用是将“1-2-3”替换成“1,2,3”

③ FINT_IN_SET的作用相当于g.id IN (1,2,3)

④ GROUP_CONCAT的作用是将查询到的结果以逗号拼接起来

2、使用MySQL内部函数DATE_FORMAT,FROM_UNIXTIME实现按时间段查找:

简单创建sales表如下:

1.png

将时间戳以日期的格式进行显示:

SELECT FROM_UNIXTIME(create_time, '%Y-%m-%d') AS time,sales_amount FROM sales GROUP BY create_time

执行结果如下:

2.png

查询每天的销售额:

SELECT FROM_UNIXTIME(create_time, '%Y-%m-%d') AS time,sum(sales_amount) sales_amount_sum FROM sales GROUP BY time

执行结果如下:

3.png

查询每月的销售额:

SELECT FROM_UNIXTIME(create_time, '%Y-%m') AS time,sum(sales_amount) sales_amount_sum FROM sales GROUP BY time

执行结果如下:

4.png

查询每年的销售额:

SELECT FROM_UNIXTIME(create_time, '%Y') AS time,sum(sales_amount) sales_amount_sum FROM sales GROUP BY time

执行结果如下:

5.png

注意:

①在更换时间段的时候,只需要将FROM_UNIXTIME的格式进行修改。(这里的月销售额与年销售额相同只是因为创建的时候巧合了呀)

②这里FROM_UNIXTIME指的是将时间戳转换为日期格式,(UNIX_TIMESTAMP是将日期格式转化为时间戳)

③在使用DATE_ FORMAT的时候时间是具体的日期,其他与FROM_UNIXTIME使用相同

④ DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中:
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post