1.将字段的所有值拼接成字符串:group_concat
用法:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
2.将时间戳转日期:from_unixtime
用法:FROM_UNIXTIME(unix_timestamp,format),
其中fomat格式如: '%Y-%m-%d %H:%i:%S'
3.将日期转时间戳:date_format
用法:DATE_FORMAT(date, format)
4.if
用法:IF(condition, v1, v2),
其中condition为true时返回v1,否在返回v2
5.case...when
用法:case 字段 when 比较值1 then 返回值1 when 比较值2 then 返回值2 else 返回值3 end,
其中字段的值 = 比较值1,则为返回值1,如果都不等于比较值1或者比较值2,则为返回值3
6.@用户变量
用法:@tmp:=字段或值
个人总结:
1.如果想获取某个字段的所有值,而且数据量不大,又不想使用循环,我们可以使用group_concat函数帮我们处理好。
2.时间函数我们一般用在对时间戳格式化日期或者按日/月/周/年等对数据分组统计,如果在where条件中使用了time字段,并且已经知道time的范围,那么我们尽量不要使用mysql的函数,因为如果数据量过大,可能查询速度会减慢。
3.有时我们使用case...when...then...else...end会和group by同时使用。
4.@用户变量的使用有时和if同时使用或者我们可以对数据排序(数据量小对查询速度影响不大)。
参考https://www.cnblogs.com/wenxinphp/p/5841430.html
https://www.cnblogs.com/haorenergou/p/7927591.html
https://www.cnblogs.com/yangchunze/p/6669523.html