今天在做一个用户活动查询功能的时候,查询参与的活动。正常,使用egg-mysql查询数据一般会这么写

    result = await this.app.mysql.select('tb_activity_apply', {
where: { userid: userid },
orders: [['createtime', 'desc']], // 排序方式
limit: pageSize,// 返回数据量
offset: (pageNum - 1) * pageSize, // 数据偏移量
})

但因为涉及到两张表,也不知道egg-mysql是否支持表关联查询 ,如果按照上面这种方式的话 ,实现步骤就是,先遍历查询活动报名表,拿到用户参与报名的活动id,然后在根据

活动id去遍历活动表查询到用户参与的活动数据,这次需要2次遍历,想想就不太好,如果活动表数据量小的话那还没事,但数据量大的话,比如1万条甚至10万数据,这么遍历的话会疯掉 ,所以这种方式pass掉。

所幸的是,egg-mysql支持直接写sql语句

语法如下:

    this.app.mysql.query('select * from tb_activitiy where id = ?',[id]);

所以这里我通过直接写sql语句的方式实现该功能,使用left join on 左连接实现mysql的多表关联查询 ,这里left join on 左连接的意思就是查询a,b两张表,通过一个外键进行关联,以左表为基准,左表一条记录如果对应右表多条记录,那查出的数据中右表的数据也只显示一条

ORDER BY b.createtime 时间排序

limit 0,3 分页 语法 limit m,n 其中m表示从第几条开始,n表示取几条

最后实现的代码

    let sql = 'select b.* from tb_activity_apply a left join tb_activity b on a.activityid = b.activityid where a.userid = ? ORDER BY b.createtime DESC limit ?,?';
result = await this.app.mysql.query(sql, [userid, (pageNum - 1) * pageSize, pageSize]);

参考阅读

https://www.cnblogs.com/softidea/p/6934950.html

小程序开发笔记【一】,查询用户参与活动列表 left join on的用法的更多相关文章

  1. 微信小程序开发笔记01

    微信小程序开发的优势 1,不用安装,即开即用,用完就走.省流量,省安装时间,不占用桌面: 2,体验上虽然没法完全媲美原生APP,但综合考虑还是更优: 3,对于小程序拥有者来说,开发成本更低,他们可以更 ...

  2. 微信小程序开发-IP地址查询-例子

    微信小程序开发  小程序搜索框  IP地址查询  搜索查询  样例 微信小程序 开发 参考   https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...

  3. 微信小程序开发笔记02

    今天学习了微信小程序开发用到的语言,wxml与wxss语言基本语法与html和css基本语法相似,学习起来相对简单.在小程序主要的语言是js(javascript,跟准确的说是jqery) ,由于这种 ...

  4. 微信小程序开发笔记(一)

    一.为什么要学习微信小程序开发 微信小程序是一个可以在微信上打开的轻应用,他是由多个页面组成的程序,跟传统APP比较如下: 优点 1.不需要在应用商店下载,不占用内存空间,即开即用 2.可以在微信内直 ...

  5. 微信小程序开发笔记

    前言: 因为前段时间一直在做关于微信小程序方面的项目,作为一名后端的攻城狮而言做一些简单的前端页面数据操作和管理还是比较容易快上手的,当然前提是要理解微信小程序的基本语法和请求原理.该篇博客主要记录的 ...

  6. 微信小程序开发笔记(二)

    一.前言 继承上一篇所说的,有了对微信小程序的基础概念后,这边将会示范动手做一个小程序,在动手的过程中我们可以更快的熟悉小程序里面的架构和开发流程. 二.小程序的设计 这次要做的是一个猜数字的程序,程 ...

  7. 微信小程序开发笔记04

    今天将小程序的页面进行优化 消除昨天遇到的bug问题. 完成了微信小程序的开发.

  8. 微信小程序开发笔记03

    今天基本实现了微信小程序主要功能,页面还没有进行优化,有些功能还需完善. 页面之间的信息转化部分还未实现.

  9. 微信小程序开发总结-怀庄酒业投票活动

    使用微信小程序投票活动云开发 怀庄酒业活动 使用云开发.开始准备使用django开发自己的后台,但是发现功能比较简单,使用云开发更省事 项目结构: cloudfunctions目录下是三个云函数 ba ...

随机推荐

  1. seleium_元素定位

    一,元素定位 切换ifram 退出ifream alert定位 select多项选择操作 鼠标悬浮操作

  2. js array 对象

    Javascript 对象: Array 对象:数组 创建方法: 1, var a = new Array() 2,var a = new Array(3) 3,var a = new Array(“ ...

  3. The SQL Server instance returned an invalid or unsupported protocol version during login negotiatio

    在使用.net core 连接sqlserver的时候遇到了这个问题 从字面意思理解大致是个什么版本不支持, 谷歌一下吧,ok,看到这个2000我就知道什么问题了 我的数据库还是2000的,总算把20 ...

  4. 2017 ES GZ Meetup分享:Data Warehouse with ElasticSearch in Datastory

    以下是我在2017 ES 广州 meetup的分享 ppt:https://elasticsearch.cn/slides/11#page=22 摘要 ES最多使用的场景是搜索和日志分析,然而ES强大 ...

  5. JVM服务进程挂掉问题定位查询思路

    昨天有朋友咨询了个RegionServer宕机找不到日志无法定位原因的问题,干脆就系统整理下JVM服务宕机的可能原因,方便按照思路去找真正的宕机原因. 1. abort()/halt()/exit() ...

  6. Django之csrf防御机制

    1.csrf攻击过程 csrf攻击说明: 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站 ...

  7. Android找回密码功能 手机找回、邮箱找回

    找回密码功能设计:https://blog.csdn.net/qq_33472765/article/details/82287404?utm_source=blogxgwz0 手机找回:https: ...

  8. HBuilder git使用-建立仓库,邀请用户

    1.git环境配置好后,在Github上注册好帐号 2. 创建一个Respository(代码仓库) 3.邀请其他小组用户(必须的,要不别人提交不了修改) 4.把邀请链接要COPY给其他用户 5. 其 ...

  9. python3 stack/ queue和deque模块

    '''栈stack 先进后出FILO (first in last out)'''lst = []lst.append("张一山")lst.append("杨紫" ...

  10. [Swift]LeetCode949. 给定数字能组成的最大时间 | Largest Time for Given Digits

    Given an array of 4 digits, return the largest 24 hour time that can be made. The smallest 24 hour t ...