网站首页 > 文章中心 > 其它

mysql怎么查多表连接

作者:小编 更新时间:2023-09-01 19:29:58 浏览量:137人看过

mysql复杂查询--多表查询

多表查询是指基于两个和两个以上的表或是视图的查询.在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept表和emp表)

自连接是指在同一张表的连接查询

select * from emp where empno=(select mgr from emp where ename='ford');

子查询是指嵌入在其它sql查询语句中的select语句,也叫嵌套查询

单行子查询是 指只返回一行数据的子查询语句

select * from emp where deptno=(select deptno from emp where ename='smith');

多行子查询指返回多行数据的子查询 使用关键字 in

如果我们的一个子查询,返回的 结果是多列,就叫做列子查询

合并多个select语句的结果,可以使用集合操作符 union,union all

mysql多表查询连接方式

满外连接的结果 = 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据.

需要注意的是,MySQL不支持FULL JOIN,但是可以用 LEFT JOIN UNION RIGHT join代替.

TypeORM 无关联关系的mysql多表连接查询

TypeORM 官方给的文档中,多表查询时使用的是通过实体关系进行leftjoin查询,我们知道TypeORM实体关系实际上是通过mysql的外键实现的.在实际开发中,外键因为有诸多限制不被推荐使用,大部分的都是无关系的表连接.经过几天的查找资料和摸索,找到了两种查询的方法,最后提醒一下大家,如果大家有其他好的方法,欢迎留言讨论.

这种方法使用getRawOne获取到sql查询后的原始数据,因为TypeORM会用别名,所以这里用select对字段进行了重命名,这个写法需要对每个需要的字段名进行重命名,否则返回的字段名称会带上表名.

第二种方法使用leftJoinAndMapOne作字段映射,如果一对多可以使用leftJoinAndMapMany.这样就不用挨个对字段重命名,但是可能存在嵌套较深的问题.

好了,全部的常用的两种表连接的方法,每个都有其优缺点,可以根据情况选择使用.两外附上这两种方法的出处:

①.、

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章