加入两个表并在mysql上显示不同的列

时间:2014-09-23 02:05:37

标签: mysql sql join union

我有这张桌子

表"分配" - > npwp,kpp,cab,nip_ar,klu - >有31.023数据

table" masterfile" - > npwp,kpp,cab,jenis,nama,kota - >有33.631数据

我想加入这两张桌子所以我可以得到,npwp,kpp,cab,jenis,nama,kota,nip_ar,klu

当我使用LEFT JOIN时,处理时间很长。但是当我使用UNION ALL时,它并不像我想要的那样工作。

这些我的UNION ALL查询:

  

SELECT npwp,kpp,NULL作为作者,cab,nip_ar,klu FROM assign GROUP BY npwp,kpp,cab UNION ALL SELECT npwp,kpp,cab,jenis,nama,kota FROM masterfile GROUP BY npwp,kpp,cab;

我刚收到列npwp,kpp,author,cab,nip_ar,klu。但是列jenis,nama,kota没有显示。

和我的LEFT JOIN查询:

  

SELECT masterfile.npwp,masterfile.kpp,masterfile.cab,masterfile.name,masterfile.address,assign.nip_ar,assign.klu FROM masterfile LEFT JOIN assign ON assign.npwp = masterfile.npwp AND assign.kpp = masterfile .kpp AND assign.cab = masterfile.cab;

我是新手查询,请帮我解决这个问题。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

谢谢大家,我在聚会上得到朋友的回答,

我的连接查询是好的,只需在两个表主文件中的NPWP,KPP,CAB列中添加INDEX并分配,这样查询就可以更快地处理。

  

SELECT masterfile.npwp,masterfile.kpp,masterfile.cab,masterfile.name,masterfile.address,assign.nip_ar,assign.klu FROM masterfile LEFT JOIN assign ON assign.npwp = masterfile.npwp AND assign.kpp = masterfile .kpp AND assign.cab = masterfile.cab;