ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 联表查询 --- > 使用 ``join()`` 方法可以将多个表关联起来查询 该方法接收三个参数 第一个参数指定要关联的表名,并指定一个别名 如:``role B`` 第二个参数指定关联条件 如:``A.id = B.user_id`` 第三个参数指定关联类型,默认为 `left` 可不传 > 关联类型有如下四中模式 * `inier`: 如果表中有至少一个匹配,则返回行 * `left`: 即使右表中没有匹配,也从左表返回所有的行 * `right`: 即使左表中没有匹配,也从右表返回所有的行 * `full`: 只要其中一个表中存在匹配,就返回行 更详细的讲解请看这篇文章 > [【MySQL】 left join、right join和join的区别](https://segmentfault.com/a/1190000017369618) 举个例子,两个表关联 ``` this.Db('user') .alias('A') .join('role B','A.id = B.user_id') .where('A.id','=',3) .select() ``` 最终的SQL语句为 ``` SELECT * FROM `user` AS A LEFT JOIN `role` AS B ON A.id = B.user_id WHERE A.id = 3 ``` 举个例子,三个表关联 ``` this.Db('user') .alias('A') .join('role B','A.id = B.user_id') .join('auth C','B.id = C.role_id') .where('A.id','=',3) .select() ``` 最终的SQL语句为 ``` SELECT * FROM `user` AS A LEFT JOIN `role` AS B ON A.id = B.user_id LEFT JOIN `auth` AS C ON B.id = C.role_id WHERE A.id = 3 ```