SQL 函数
1. group_concat()
group_concat([DISTINCT] fieldA [Order BY fieldB ASC/DESC] [Separator '分隔符'])
-- 根据价格进行分组,将相同价格的电影名称放在一列中,以逗号进行分割,默认就是逗号,可以省略。
SELECT prices,group_concat(distinct movie order by date desc separator ',') as movies from movies_list group by prices;
prices | movies |
---|---|
10 | A,B,C |
20 | d,e,f |
2.获取当前时间所在的年,季度,月,周,日的函数
curdate()=20220513
- year()
select year(curdate()) -- 2022
- quarter()
select quarter(curdate()) -- 2
- month()
select month(curdate()) -- 5
- week()
select week(curdate()) -- 19
- day()
select day(curdate()) --13
3. round函数
-- ROUND 函数用于把数值字段舍入为指定的小数位数
SELECT ROUND(column_name,decimals)
eg: select round(3.14159,3) -- 3.142
-- 参数说明
column_name 需要四舍五入的字段
decimals 保留的小数位数
4. floor函数
-- FLOOR 函数用于把数值字段向下取整数
SELECT FLOOR(column_name)
eg:select floor(15.12) -- 15
5. CEILING函数
-- CEILING函数用于把数值字段向上取整
SELECT CEILING(column_name)
eg: select ceiling(16.23) -- 17
6. MAX() , MIN()
-- 都会对 null 进行忽略
7. count()
在进行count(1)或count(*),若出现null 则会进行统计
在count(字段) ,若该字段有null值,则不会进行统计
8. sum(),avg()
主要是对数值进行计算
9. week_floor()
## 取到传入日期的上周末
SELECT WEEK_FLOOR(CURDATE()),'%Y-%m-%d') -- 今天2022-08-18
-- 结果为:2022-08-14
10. week_ceil()
## 与week_floor 相反
SELECT DATE_FORMAT(WEEK_CEIL(CURDATE()),'%Y-%m-%d')
-- 今天 2022-08-18
-- 结果 2022-08-21
11. MYSQL中 AND 和OR的优先级
在没有括号的干预下,mysql中 and 的优先级高于 or ,是先执行 and 语句 后执行 or 语句
情况一:
select * from t_table where 条件A AND 条件B OR 条件C
等价于
select * from t_table where (条件A AND 条件B ) OR 条件C
情况二:
select * from t_table where 条件A AND 条件B OR 条件C and 条件D
等价于
select * from t_table where (条件A AND 条件B ) OR (条件C AND 条件D)