账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    egg.js egg-mysql 的CRUD 语句 多表联合查询同字段
    38
    0

    问题描述

    关于egg-mysql 的多表联合查询同字段的CRUD 语句。

    官方的查询代码实例

    const results = await this.app.mysql.select('posts', { // 搜索 post 表
      where: { status: 'draft', author: ['author1', 'author2'] }, // WHERE 条件
      columns: ['author', 'title'], // 要查询的表字段
      orders: [['created_at','desc'], ['id','desc']], // 排序方式
      limit: 10, // 返回数据量
      offset: 0, // 数据偏移量
    });

    例如:mysql里两个表都有一字段,怎么把两个表的数据select出来。
    mysql 写法为: 'select a.author,b.author form a,b where a.author=b.author';

    若按照egg.js 的写法该如何去写。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在JavaScript中,我们可以使用JavaScript的Promise和MySQL的ORM(Object Relational Mapping)库(如egg-mysql)来处理多表联合查询。以下是一个基本的示例,展示如何使用egg-mysql的CRUD操作来查询一个名为users的表,以及包含两个名为emailpassword的字段的表:

      首先,我们需要安装egg-mysql和Promise的基本库,然后在你的JavaScript文件中导入它们:

      ```javascript const mysql = require('mysql'); const Promise = require('promise');

      // 创建一个MySQL连接 const connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'password', database: 'database_name' });

      // 创建一个Promise对象 const query = new Promise((resolve, reject) => { // SQL查询:根据emailpassword字段查询users表 connection.query('SELECT * FROM users WHERE email = ?', [email], (error, results, fields) => { if (error) { reject(error); } else { resolve(results); } }); });

      // 关闭MySQL连接 connection.end((error) => { if (error) { reject(error); } else { console.log('Query executed successfully'); } }); ```

      在这个示例中,我们首先创建了一个MySQL连接,然后使用query方法执行SQL查询,根据emailpassword字段查询users表。如果查询成功,resolve方法将返回查询结果,否则reject方法将返回一个错误对象。最后,我们关闭MySQL连接。

      请注意,这个示例假设users表有一个名为emailpassword的字段,并且它们都在users表中。如果你的表结构不同,你需要修改SQL查询语句来适应你的表结构。

      此外,emailpassword字段是列名,而不是字段名。在实际应用中,你需要将它们更改为正确的列名。

      注意,这个示例使用的是Promise,如果你的数据库支持async/await语法,你可以将SQL查询转换为Promise链式操作:

      ```javascript // 使用Promise链式操作 const query = new Promise((resolve, reject) => { const sql = 'SELECT * FROM users WHERE email = ?'; const params = [email];

      connection.query(sql, params, (error, results, fields) => { if (error) { reject(error); } else { resolve(results); } }); });

      // 使用async/await语法 async function queryUsers(email) { const sql = SELECT * FROM users WHERE email = ?; const params = [email];

      const results = await connection.query(sql, params); return results; }

      // 使用await操作 const users = await queryUsers(email);

      // 关闭MySQL连接 connection.end((error) => { if (error) { reject(error); } else { console.log('Query executed successfully'); } }); ```

      在这个示例中,queryUsers函数使用了async/await语法来执行SQL查询,返回查询结果。queryUsers函数返回一个Promise对象,你可以使用await关键字等待查询结果。然后,你可以在一个for循环中使用await操作来遍历查询结果。最后,你关闭MySQL连接。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部