首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并SQL中的相似表第2部分

合并SQL中的相似表第2部分
EN

Stack Overflow用户
提问于 2011-04-18 19:50:13
回答 2查看 71关注 0票数 0

我认为人们上次不愿意帮助我,因为我不想发布专栏,但我渴望解决这个问题,所以我把我更好的判断放在一边,把它暴露出来。

好的,我有两个相似的表,并且我使用MySQL和PHP来生成表。到目前为止,我有3个表:

代码语言:javascript
复制
CPE:
fastethernet00,subnet00,fastethernet01,subnet01,hsrp,vip,bgp,bgp_neighbor,remote_as,bgp_customer_net,next_hop,loopback,cpe,hostname,cpe_cust_index,int_next_hop_1,int_next_hop_2,voice,solution

Liverpool:
apn1,apn2,apn3,apn4,apn5,customer,vpi_vci,vlan1,cust_index,RADIUS,nexthop,atinterface1,atinterface2,feinterface1,feinterface2,spinterface1,spinterface2,ip_address_range1,ip_address_range2,handset_address_range1,handset_address_range2,handset_address_range3,handset_address_range4,handset_address_range5,handset_address_range6,handset_address_range7,handset_address_range8,handset_address_range9,handset_address_range10,handset_address_range11,handset_address_range12,handset_address_range13,handset_address_range14,handset_address_range15,handset_address_range16,DNS_Server1,DNS_Server2,OLVDMVPN,live

Greenwich:
apn_1,apn_2,apn_3,apn_4,apn_5,customer_,vpi_vci_,vlan_1,cust_index_,RADIUS_,nexthop_,atinterface_1,atinterface_2,feinterface_1,feinterface_2,spinterface_1,spinterface_2,ip_address_range_1,ip_address_range_2,handset_address_range_1,handset_address_range_2,handset_address_range_3,handset_address_range_4,handset_address_range_5,handset_address_range_6,handset_address_range_7,handset_address_range_8,handset_address_range_9,handset_address_range_10,handset_address_range_11,handset_address_range_12,handset_address_range_13,handset_address_range_14,handset_address_range_15,handset_address_range_16,DNS_Server_1,DNS_Server_2,OLVDMVPN_,live_

我需要完成的第一步是通过apn_1/apn1连接格林威治和利物浦。相同的记录不一定会同时出现在两者上,甚至可能会有重复。我用来创建这个表的php抛出了一个关于UNION ALL的语法错误:

代码语言:javascript
复制
mysql_query ("CREATE TABLE Both (
SELECT * FROM `Greenwich` left outer join Liverpool on Greenwich.apn_1 = Liverpool.apn1
UNION ALL
SELECT * FROM Greenwich
RIGHT OUTER JOIN Liverpool on Greenwich.apn_1 = Liverpool.apn1  where Greenwich.apn_1 is null)")

有人能看出这有什么问题吗?

然后,我需要通过cust_index/cust_index将结果表链接到cpe_cust_index,所以理想情况下我认为需要合并这些单元格。如果这些细胞出现在格林威治和利物浦,它们将永远是相同的。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-19 16:51:29

答案是这里描述的第三种方法,使用“互斥(互斥)表

http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/

这个外加一个过滤器正好给了我所需要的。现在我只需要将索引字段合并在一起,并将apn 1字段合并在一起。

票数 1
EN

Stack Overflow用户

发布于 2011-04-18 20:03:32

尝试对所有要选择的列进行命名,并使用AS作为别名,以使它们匹配。Union不喜欢列名不匹配。

例如:

代码语言:javascript
复制
Select col1 as col1, col2 as col2 from table1
Union
Select col-1 as col1, col-2 as col2 from table2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5702385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档