mysql基础(5)-关联
时间:2021-07-01 10:21:17
帮助过:2人阅读
内连接:
- 仅显示满足条件的行
- From T1,T2 where T1.ID=T2.ID
- From T1 inner join T2 ON T1.ID=T2.ID
左连接:
- 显示左表T1中的所有行,并把右表T2中符合条件加到左表T1中
- From T1 left out join T2 ON T1.ID=T2.ID
右连接:
- 显示右表T1中的所有行,并把左表T1中符合条件加到右表T2中
- From T1 right outer join T2 ON T1.ID=T2.ID
全连接:
- 显示左表T1,右表T2两边中的所有行,即把左联结果表+右联结果表组合在一起,然后过滤掉重复的
- From T1 full outer join T2 ON T1.ID=T2.ID
文件关联类型:
文件导入
- data=pd.read_csv(/path/inputfile) #读取数据
- df=DataFrame(data) #转换为dataframe格式
内连接
- df3=pd.merge(df1,df2,on=‘key‘)
- df4=pd.merge(df1,df2,on=‘key‘,how=‘inner‘)
左连接
df_l=pd.merge(df1,df2,on=‘key‘,how=‘left‘)
右连接
df_r=pd.merge(df1,df2,on=‘key‘,how=‘right‘)
全连接
df_a=pd.merge(df1,df2,on=‘key‘,how=‘outer‘)
实例
内连接:mysql> select * from stud_info T1 , stud_score T2 where T1.stud_code=T2.stud_code;
内连接:mysql> select * from stud_info T1 inner join stud_score T2 on T1.stud_code=T2.stud_code;
左连接:mysql> select * from stud_info T1 left outer join stud_score T2 on T1.stud_code=T2.stud_code;
右连接:mysql> select * from stud_info T1 right outer join stud_score T2 on T1.stud_code=T2.stud_code;
文件关联
In [1]: import numpy as npIn [2]: import pandas as pdIn [3]: from pandas import DataFrameIn [4]: df1=DataFrame({‘key‘:[‘a‘,‘a‘,‘b‘,‘c‘,‘c‘],‘data1‘:range(5)})In [5]: df2=DataFrame({‘key‘:[‘a‘,‘b‘,‘d‘],‘data1‘:range(3)})内连接【三种方式】
In [8]: df3=pd.merge(df1,df2,on=‘key‘) #把符合条件的行取出来In [10]: df4=pd.merge(df1,df2,on=‘key‘,how=‘inner‘) In [12]: df5=pd.merge(df1,df2,left_on="key",right_on="key",how="inner")
左连接
In [14]: df_l=pd.merge(df1,df2,on="key",how=‘left‘)
右连接
In [16]: df_r=pd.merge(df1,df2,on="key",how=‘right‘)
全连接
In [18]: df6=pd.merge(df1,df2,on=‘key‘,how=‘outer‘)
In [21]: df7=pd.merge(df1,df2,on=‘key‘,how=‘inner‘,suffixes=[‘_left‘,‘_right‘])
注释:两个表结构相同的字段,自动添加后缀_x,-y,也可自定义后缀,通过suffixes=(‘_left‘,‘_right‘)