目录
group by
1、分组字段不能使用字段的重命名进行分组
order by
1、order by排序字段若含有()特殊字符,会报错
limit
1、limit 5每次返回的数据不一样
函数
1、CAST()和CONVERT()
group by
1、分组字段不能使用字段的重命名进行分组
原因:
mysql5.7.5版本之后,对语法的校验更加严格,group by不能使用select的重命名字段
解决方法:
-- 查看 sql_mode
SELECT @@sql_mode;
执行结果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
可以重新设置:
set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
order by
1、order by排序字段若含有()特殊字符,会报错
原因:
mysql会将()识别为一个function,导致我发进行排序
解决方法:
使用反单引号`字段名`,即可解决
limit
1、limit 5每次返回的数据不一样
原因有两点:
a、数据主键不是自增有序的
b、相同的sql语句,满足筛选条件的数据超过5条,同一数据库连接下,返回的数据是相同的。若关闭连接,重新建立数据库连接并查询(关闭navicat,再打开查询),那么返回的数据可能会发生改变,是从满足筛选条件的数据中随机出来的5条数据
函数
1、CAST()和CONVERT()
CAST(expor AS type)和CONVERT(value, type)两个函数都用作类型转换,type的取值有以下几种:
- 字符型:CHART(),可带参数
- 时间:DATE
- 日期时间:DATETIME
- 浮点型:DECIMAL
- 整数:SIGNED
- 无符号整数:UNSEGNED