ERROR 1060 (42S21): Duplicate co

作者: 喝奶茶不加奶茶 | 来源:发表于2020-06-30 15:41 被阅读0次

一、错误背景:

select *,o.userid as o_id from
 (select * from orderinfo as o left join userinfo as u on u.userid=o.userid) t
where t.isPaid='已支付' ;

ERROR 1060 (42S21): Duplicate column name 'userid'

二、解决办法:
其实这个问题的本质是子查询:

select * from orderinfo as o left join userinfo as u on u.userid=o.userid;

中出现重复字段名,如下图:


所以,我们在查询的时候需要对字段进行重命名,如下:

select * ,o.userid as o_id, u.userid as u_id from orderinfo as o left join userinfo as u on u.userid=o.userid limit 10;

但是这样是在查询原有全部信息的同时又增加了重新命名的两列,如何在查询全部信息的同时更改其中某个字段的名称呢?

目前的解决办法是:
自己手动写出需要查询的字段的名称,如下:

 select o.orderid,o.userid as o_id, o.isPaid ,o.price,o.paidTime,u.sex,u.birth,u.userid as u_id 
 from orderinfo as o left join userinfo as u on u.userid=o.userid limit 10;

这样似乎有些蠢笨,等发现有简单方法后再来更新。

方法更新:
如下:

select a.*,b.sex,b.birth 
from orderidfo as a left join userinfo as b on a.userid=b.userid limit 10;

这个的思路是:
这样写就不用修改名称了,a.*查询字段多的表,字段少的表b直接手写

相关文章

网友评论

    本文标题:ERROR 1060 (42S21): Duplicate co

    本文链接:https://www.haomeiwen.com/subject/avexqktx.html