从A表拿大部分字段,从B表拿一个b1字段,从C表拿一个c1字段,组成一张表,可以用action_date,cus_key把他们关联上,这时候用什么方法关联比较好呢?
(sql问题)
你应该把表的字段截图,然后表的关系根据字段详细说明一下,这样别人可以给你一个具体的sql语句,按你现在的描述,只能给个示意语句,比如action_date,cus_key分别是AB以及AC的共有关联字段:
select A.*,B.b1,C.c1 from A left join B on A.action_date = B.action_date left join C on A.cus_key = C.cus_key;
不就是left join吗
你还能想到别的方法吗
感觉楼上回答的SQL语句没什么问题,点赞顶上去
使用,join in 字段啊
看你的业务场景,能用内关联Inner join就用内关联,尽量不要用左关联。
使用left join可以实现你的需求,但是效率会比较低,如果action_date,cus_key关联字段都不为空或null,使用inner join可以提高效果,如果有一个为空,那么与为空的表关联时使用left join ,另一个使用inner join
1.在表连接和关联子查询中,一般来说jojn的性能会更好一些,所以是推荐表连接>关联子查询
2.表连接分为inner和outer,需要选择那种要根据你业务场景来,如果取数是三表内连接就可得到的,用jojn即可。如果某个表的取数,除了连接外还需要保留一些数据,那就是left join这种外连接了。
3.优化选取,一定是小表驱动大表。主要分清楚哪个是驱动表,哪个是被驱动表,left join下左表是驱动表,right join反之,join会识别哪个数据小的作为驱动表,个人建议可以大表join小表。
表的粒度不同该怎么关联呢?
join关联,但是你的对应关系是啥呢
一楼正解,建议关联字段加索引