自连接查询结果作为from查询对象时报错“Error Code:1060.Duplicate Column name XXX“的解决方法

原始表格“test_table”:
在这里插入图片描述

第一步:自连接

select *    # 使用*输出所有字段
from test_table t1, test_table t2 where t1.city =t2.city and t2.sales_date=t1.sales_date+1;

得到结果:
在这里插入图片描述

第二步:讲自连接查询结果作为from的查询对象

select city, sales_date, a2/a1 增长率 
from 
(select *  # 这里依然使用*输出全部子查询的字段
from test_table t1, test_table t2 where t1.city =t2.city and t2.sales_date=t1.sales_date+1) t;   

此时执行语句就会报错:Error Code: 1060. Duplicate column name 'city’

原因:子查询的输出结果中有重复字段“city"

解决办法:在子查询部分的select子句中不要使用”*“输出所有字段(这样就会产生重复字段),而是要单独输出构成自连接临时表的原始表中的不重复字段(这里只输出其中一张表的”city"字段,而另一张表的“city”字段切记不能输出,否则会构成重复字段)。

调整后的代码:

select city, sales_date, a2/a1 增长率 
from 
(select t1.city,t2.sales_date ,t1.sales_amout a1 ,t2.sales_amout a2 ### 注意:这里只能输出自连接的其中一张表的“city"字段
from test_table t1, test_table t2 where t1.city =t2.city and t2.sales_date=t1.sales_date+1) t;  

执行得到的结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值