MySQL下对数据表数据做分组,并显示每一组的第一行(具体怎么算每组的第一行数据,可以根据order by某一字段) 思路:可以先用 查出ID列表然后作为子查询条件再去select原表,具体SQL如下(这个办法需要一个主键ID(primary_key)或唯一键unique_key): SELECT column1, column2 FROM table1 WHERE id IN ( SELECT min(id) FROM table1 GROUP BY column1 ); 另一种办法如下(不需要主键或者uniqu…

2022-06-28 0条评论 8点热度 0人点赞 admin 阅读全文

MySQL中生成随机数的函数是,该函数还可以接收一个seed数(种子),返回一个0-1之间的小数(0<=x<1,大于等于0,小于1)。例如: mysql> SELECT RAND(); RAND(): 0.4768667244136955 (生成随机数) mysql> SELECT RAND(7); RAND(): 0.40161898397060014 (生成随机数,种子数是7) mysql> SELECT RAND(-1.1); RAND(): 0.5774947773455593…

2022-06-16 0条评论 30点热度 0人点赞 admin 阅读全文

有一些业务逻辑,需要检测是否存在某个特定的表后做一些事情(例如数据库按年分表的情况下,定期检查是否存在下一年的表,不存在就新建表),以下SQL(指定是Oracle数据库)可以检测是否存在某张表或者视图(当然如果没有检测视图的需求,可以稍加修改),如果存在表,返回的cnt就大于0,不存在就返回count等于0 -- 如果select出来的结果等于0,说明不存在,大于0,说明表或者视图已存在 select count(*) as cnt from all_objects where object_type in ('T…

2022-06-08 0条评论 31点热度 0人点赞 admin 阅读全文

Hibernate遇到一个报错问题,如下: java.sql.SQLException: HOUR_OF_DAY: 0 -> 1 网上查了,都说可能是: mysql jdbc驱动问题 数据库连接字符串的时区问题 经查,这些问题都排除了,还是报错。 我的实体类是: @Entity @Table(name = "t_student") public class Student implements Serializable { private Long id; private boolean disabled;/…

2022-03-10 0条评论 63点热度 0人点赞 admin 阅读全文

需求,需要在MySQL的SQL语句中(录入插入一条新的记录,记录里面有个字段需要生成随机字符串)需要生成随机数。网上查了一番,MySQL好像还没有比较官方的现成的函数。 有一些是利用了rand(md5())这样的方法,不过觉得随机性不够,就不展开说了。 一下是另外发现的一些比较好的随机方法,整理下,供参考: 如下,是从[0-9A-Z]中随机生成一位,当然如果要换成小写,就只需要把大写的字母改成小写;如果要大小写都要,只要把小写的都加上,当然36(总的候选随机数的个数,要改成26+26+10=62) SELECT e…

2022-03-09 0条评论 98点热度 0人点赞 admin 阅读全文

MySQL的SQL语句中需要对String类型的文本转换成Date类型,可以使用str_to_date函数,接受2个参数,一个是需要转换的文本,第二个是格式化的模板 模板如下介绍: %Y-%m-%d 对应的是:年-月-日(如果月和日是小于10的数,会自动加上0) %T 对应的是时间:时-分-秒 同样如果小于10的,会自动加上0,如果要转换的时间没有秒,也是可以正常解析的,只是秒的部分是0 %Y-%m-%d %T  对应的是:年-月-日 时-分-秒 SQL示例如下: select STR_TO_DATE('2021-…

2022-03-02 0条评论 80点热度 0人点赞 admin 阅读全文

需要select某个表,随机获取多条记录 利用rand()函数,hibernate会根据数据库不同(例如spring.jpa.properties.dialect,MySQL是org.hibernate.dialect.MySQLDialect,Oracle是org.hibernate.dialect.Oracle10gDialect),生成相应数据库的SQL /** * 返回随机选择的size个记录 */ public List<Student> listStudents(int size) { St…

2022-02-12 0条评论 101点热度 0人点赞 admin 阅读全文

例如有这样一张表,存的是学生测验成绩,测验记录可以有多条,我们需要筛选出每个学生最近一次的测验记录 mysql> desc t_student_test; +--------------+--------------+------+-----+---------+-------------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+--…

2022-01-20 0条评论 89点热度 0人点赞 admin 阅读全文

实现类似关系数据库的select in subquery,如下: SELECT * FROM table1 WHERE some_id NOT IN ( SELECT id FROM table2 WHERE some_field = 'some_value' ) db.collect_name1.find( { "some_id": { $nin: db.collection_name2.find({}, { "some_field": "some_value" }).toArray().map(e => …

2022-01-17 0条评论 75点热度 0人点赞 admin 阅读全文

MySQL下有一个特殊的数据库记录者所有的表,以及表的结构,那就是information_schema,我们可以查询这个数据库来找到所有数据库的列表,所有表的列表,以及某个表的所有列的详细信息。 找出某个数据库下的所有表,并修改字符集为:utf8mb4_general_ci 用到information_schema.tables 存储着全部数据库的表 -- 得到数据库是test的所有表的详细信息列表 SELECT * from information_schema.tables where table_schema…

2022-01-13 0条评论 72点热度 0人点赞 admin 阅读全文