Skip to content

联表查询


join()

可以将多个表关联起来查询, 一步到位减少多次调用的逻辑

  • @param tableName 关联的表名
  • @param whereStr 关联条件
  • @param type 关联类型 可以为 INNER, LEFT, RIGHT, FULL 默认为LEFT
  • INNER: 如果表中有至少一个匹配,则返回行
  • LEFT: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT: 即使左表中没有匹配,也从右表返回所有的行
  • FULL: 只要其中一个表中存在匹配,就返回行

更详细的讲解请看这篇文章

【MySQL】 left join、right join和join的区别

两个表关联

Db('user').join('role', 'user.id = role.user_id').where('user.id', 1).select()
Db('user').join('role', 'user.id = role.user_id').where('user.id', 1).select()

最终的SQL语句为:

SELECT * FROM user LEFT JOIN role ON user.id = role.user_id WHERE user.id = 1
SELECT * FROM user LEFT JOIN role ON user.id = role.user_id WHERE user.id = 1

三个表关联

Db('user')
.join('role', 'user.id = role.user_id')
.join('auth', 'role.id = auth.role_id')
.where('user.id', 1).select()
Db('user')
.join('role', 'user.id = role.user_id')
.join('auth', 'role.id = auth.role_id')
.where('user.id', 1).select()

最终的SQL语句为:

SELECT * FROM user
LEFT JOIN role ON user.id = role.user_id
LEFT JOIN auth ON role.id = auth.role_id
WHERE user.id = 1
SELECT * FROM user
LEFT JOIN role ON user.id = role.user_id
LEFT JOIN auth ON role.id = auth.role_id
WHERE user.id = 1

备案号:冀ICP备20015584号-2