MySQL是一款流行的开源数据库。我们在开发过程中常常会用到读写分离,分库分表,区分开发环境与预生产环境。如果只有一台机器能用,在做预演时就需要用到多实例。
(更多…)标签: mysql
-
实现 MySQL Top 函数【原创】
需求:查询数据,根据字段分组,取出分组后每组的前N条记录。
如果是在SQL Server中,可以使用top,取前N条记录。但是在MySQL是不支持的。网上说的比较多的是用limit N,虽然可以取到前N条,但那是分组后的N条,不是每组N条数据,所以不符合需求,排除。还有一种是使用union把多个结果连接起来,这种方法需要提前知道有分多少组,而且不适合分组太多的场景,排除。我的实现思路:
1.查出分组后的数据。
2.使用原表数据和分组后的数据连接起来。
3.按组生成序列(从0开始)。
4.根据序列编号做为条件,找出前N条数据。
(更多…) -
从SQL查询结果随机取一条数据
最近工作中会涉及复杂的SQL语句,还是挺有意思的。以前想写没有应用场景,现在正好可以多锻炼锻炼。我觉得在实际开发中,程序代码并不是最难的,最难的还是SQL。SQL逻辑性最强,而且还要很清楚表设计,业务场景。特别是复杂的业条场景下提炼数据,要考虑到功能,性能,是否会锁表。
需求:有一张表保存诺干条广告信息。当APP启动时,根据登录用户所在的区域,随机取出一条广告返回,作为启动页。数据库:MySQL
刚开始,我的做法是:select floor(max(startPageId) * rand()) from ghome.ghome_startpage_info where 1=1 and status!='00';
startPageId是自动增长的Integer型
其他where条件不贴出来了。这句意思是,查询符合条件的数据,根据 max 函数找出结果最大的,乘以 rand 函数随机生成的一个小于1的数,再用 floor 去掉小数位。得出一个 randId。
(更多…)