今天在做一个用户活动查询功能的时候,查询参与的活动。正常,使用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. 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=

    weixin://dl/business/?ticket=  到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...

  2. vue创建状态管理(vuex的store机制)

    1:为什么说要是永远状态管理 在使用 Vue 框架做单页面应用时,我们时常会遇到传值,组件公用状态的问题.(子父间传值文章传送门) ,如果是简单的应用,兄弟组件之间通信还能使用 eventBus 来作 ...

  3. jmeter学习笔记(一)

    1.添加JSON Path Extractor >>下载地址:http://jmeter-plugins.org/downloads/all/,下载 JMeterPlugins-Extra ...

  4. AJAX-同源策略 跨域访问

    ## 同源策略 概述: 同源策略是浏览器的一种安全策略,视为同源是指域名,协议,端口完全相同.只有同源的地址才可以通过AJAX方式请求.同源或者不同源说的是两个地址的关系,不同源地址之间请求我们称之为 ...

  5. 排查MongoDB CPU使用率高的问题

    1.公司业务调整,把一部分数据由Redis转至MongoDB,业务在测试环境正常,生产环境上线后发现压力一上来MongoDB的服务直接把CPU占满了,和开发的同学分析了一下也参考了一下百度上类似的问题 ...

  6. mysql 5.6.43免安装版安装教程

    1.第一步,下载 Mysql官方网站:http://www.mysql.com/,数据库下载地址:http://www.mysql.com/downloads/.个人比较喜欢用免安装版,使用起来方便 ...

  7. changXY

    changXY <!DOCTYPE html> <html> <head> <link rel="shortcut icon" href= ...

  8. 机器学习之正则化(Regularization)

    1. The Problem of Overfitting 1 还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图. 如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上 ...

  9. 模仿bootstrap做的 js tooltip (添加鼠标跟随功能)

    主要思路: 使用jquery hover方法,当进入时显示tooltip,移出时隐藏tooltip当设定为鼠标跟随时,使用mousemove事件显示tooltip根据tooltip显示位置设置,计算t ...

  10. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    Serialization is the process of converting a data structure or object into a sequence of bits so tha ...