整理了一些平时自己遗忘的点。
1、Mysql的substring(str,pos,len)截取与java中substring(beginIndex,endIndex)定义不同
改成
区别在与:
pos在mysql所有的substring()函数中都是以1为开始位,pos可以是负数,即从后倒数,也是从-1开始,到字符串结束,len就是指截取长度。
java的substring中beginIndex为索引,因此不可为负数,默认从0开始,到endIndex-1结束。
官方文档中都有例子:
http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
mysql的截取字段函数比较多,比较方便,也可以查阅。
2、按数字大小对varchar字段进行排序:
基本思路是将字段类型转换为整型类型->
1、在order by的字段前添加减号 '-';
2、在排序的字段加上数字 '1'
例子:
select * from fi_audit where 1=1 order by -user_id desc
或者
select * from fi_audit where 1=1 order by (user_id + 1) desc
备注:user_id是varchar类型。
3、关于group by与having
http://dev.mysql.com/doc/refman/5.0/en/group-by-handling.html
group by:
在典型的SQL中一个带有group by子查询中,若查询的非聚集列(聚集列包括Count等聚集函数)并没有出现在group by子句之后,但却出现在我们所要查询的列中,那么则会出错。
例子:
SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o, customers AS c
WHERE o.custid = c.custid
GROUP BY o.custid;
如这里的c.name,则会出错。可以修改将c.name加到group by子句中或者去掉c.name即可。
但是在mysql中允许这样的语句出现,
MySQL extends the standard SQL use of GROUP BY
so that the select list can refer to nonaggregated columns not named in the GROUP BY
clause.
当没有在group by子句中的非聚集列,他们各自对应的所有值对每个分组都是相同的时候,这是非常实用的。因为可以从任意分组选择任何值,除非它们(分组-ques)是一样的,那么选择的值是不确定的。而且上述情况并不会影响order by子句。仅仅是在值被选定之后,查询的结果排序,order by不影响服务选择每个分组中的值。
简单来说,当考虑到某些列的值是一样的时候,比较方便使用。也有局限性:
在查询的列中,非聚集列没有写到GROUP BY子句,其值是唯一的(只会查到一行结果),但GROUP BY省略的列值实际上并不唯一。
可以通过group_concat()获取分组的组合连接值(加上distinct可以去重):
当然为了维护SQL的正统地位,也可以使用ONLY_FULL_GROUP_BY的模式不允许MYSQL的这种扩展修改。可以在my.cnf文件中添加:sql_mode = 'ONLY_FULL_GROUP_BY'
设置模式链接:http://blog.csdn.net/wyzxg/article/details/8787878
(这种模式设置对于mysql的having和order by的非常规SQL做法同样适用。)
group by的例子:
采用了上面的模式,那么下面的语句:
mysql> SELECT name, MAX(age) FROM t;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause
会出错,因为没有group by,name值是不确定的。
另外:
传统的sql不允许在group by中使用表达式(解决办法是通过给表达式起别名的方式):
SELECT id, FLOOR(value/100) AS val
FROM tbl_name
GROUP BY id, val;
而mysql中是可以的,不需要起别名。
having:
典型的SQL,也不允许不在group by中的列出现在having子句中(order by也是)。Mysql同样对这种情况做出了放行。在这种扩展中,假定没有分组的列有着相同的分组基准(暂时这样看),不然的话,会得到不确定的结果。
其他用法参考传统的SQL:
where与having:
where在分组前(位于group by之前)进行条件查询,但条件中不能包含聚合函数,可以使用where显示某一具体行;
having(聚合)则是筛选符合条件的分组,即分组后(位于group by之后)条件查询,条件中经常包含聚合函数,可以用having条件(也可多个)显示某些具体的分组。
自己的想法倾向于使用传统的SQL,这样便于自己以后工作跨数据库管理平台编写code(熟练使用者除外)。
4、添加某一列以及备注
ALTER TABLE 表名 ADD 列名 varchar(12) NOT NULL comment‘备注’
5、连接查询时优化
对于经常使用的数据字典表,可优化为子查询(对应的code_type)-换表,提高效率:
LEFT JOIN (select code,code_name from da_dictionary where code_type = '045') AS dd1 ON ......
相关推荐
3. 成绩查询:学生可以在系统中查看个人的学习成绩,包括平时成绩、考试成绩等,有助于自我评估和学习调整。 4. 课程资料与互动:教师可以上传课程资料,如课件、习题解答等,同时,系统提供在线讨论区,促进师生间...
开发者可以从这个老程序中学习如何构建数据模型,理解用户需求,优化交互流程,甚至挖掘一些可能被遗忘的高效算法。 在技术层面,早期的学生管理系统可能采用的是简单的数据库技术,如MySQL或Access,配合VB、Java...
在Service层或DAO层,你可以像平时执行MyBatis查询一样调用Mapper接口,PageHelper会自动处理分页: ```java PageHelper.startPage(pageNum, pageSize); List<User> users = userMapper.selectAll(); PageInfo...
55links友情链接网址跟踪器,放在桌面,每次直接打开就可以访问55links友情链接交易平台,方便快捷。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
moore_01_0909
FIBR English learning
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
OIF_IEEE802.3_liaison_19OCt09
做网络安全FTP内容的实验必备
nagarajan_01_1107
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
mellitz_3cd_01_0318
PyQt6实战派 配套代码
陕西省省级非物质文化遗产经纬度数据统计表 统计内容包含以下字段: 1. 项目名称 2. 遗产类别 3. 入选批次 4. 所属地区 5. 申报地区/单位 6. 地理经度 7. 地理纬度 该统计表系统记录了陕西省省级非物质文化遗产的地理空间信息,为文化遗产的数字化保护与研究工作提供了重要的数据支撑。
ran_3ck_02a_0918
毕业设计_基于springboot+vue开发的汽车租赁管理系统【源码+sql+可运行】【50308】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - 业务管理:汽车管理、客户管理、租赁订单 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!
# Runcorder - 跑步训练管理系统 Runcorder 是一款专为跑步爱好者、马拉松运动员及高校体育生设计的本地化跑步训练管理工具,基于 Python 开发,结合 Tkinter 图形界面与强大的数据处理能力,为用户提供从训练记录到数据分析的全方位支持。无论是初学者还是专业跑者,Runcorder 都能帮助你科学规划训练、精准追踪进度,并通过可视化图表直观呈现训练成果,让你的跑步训练更智能、更高效! - **多用户管理**:支持创建、加载和删除用户档案,每个用户的数据独立存储,确保隐私与安全。 - **科学训练记录**:全维度记录跑步数据,包括日期、里程、配速、自评和晨跑标记,支持智能输入校验,避免数据错误。 - **多维数据分析**:通过动态可视化图表展示跑步里程趋势、平均配速曲线,支持自定义 Y 轴范围,帮助用户深入理解训练效果。 - **高阶功能**:提供 4 种科学训练模式(有氧/无氧/混合),支持历史记录修改与删除,数据以 JSON 格式持久化存储,跨平台兼容。
paatzsch_01_0708
AnythingLLM是一个全栈应用程序,您可以使用流行的开源大语言模型,再结合向量数据库解决方案构建个人本地AI大模型知识库