首页新闻找找看学习计划

sql的问题

0
[已解决问题] 解决于 2017-04-28 11:53

SELECT * FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM m_order_201702 o LEFT JOIN m_order_product_201702 p ON o.order_id = p.order_id ) AS o1 UNION ALL
SELECT * FROM (SELECT * FROM m_order_201703 o LEFT JOIN m_order_product_201703 p ON o.order_id = p.order_id) AS p1) AS t) AS s WHERE s.name = 888
LIMIT 0,20

这样会报

Duplicate column name 'id'

我的"SELECT * FROM (SELECT * FROM (SELECT * FROM m_order_201702 o LEFT JOIN m_order_product_201702 p ON o.order_id = p.order_id ) AS o1"这个语句是动态添加用java添加的的,会逐月添加,"*"变为所需的字段又太多了,有没有更优的方法,求大神解答?

dom树的主页 dom树 | 初学一级 | 园豆:4
提问于:2017-04-28 10:51
< >
分享
最佳答案
0

看到那么多 select * from 心就塞了

既然都提示 Duplicate 'id' 了,都列名重复了,既然你又不能把 * 改成你的字段

想到一个笨办法,先取表的字段名,然后做去重复,然后再查询

 

 

奖励园豆:5
风醉 | 小虾三级 |园豆:1197 | 2017-04-28 11:00

 两个表分开拿吗

dom树 | 园豆:4 (初学一级) | 2017-04-28 11:03

@dom树: 既然提示字段重复,你又要 * ,笨办法先查出来 给个变量里面,然后去重复,再select 变量 from 表

风醉 | 园豆:1197 (小虾三级) | 2017-04-28 11:04

@风醉: 可以不要* 只是字段太多了

dom树 | 园豆:4 (初学一级) | 2017-04-28 11:08

@dom树: 能写字段就尽量写字段,多点没关系

风醉 | 园豆:1197 (小虾三级) | 2017-04-28 11:51

@风醉: 知道了,谢谢

dom树 | 园豆:4 (初学一级) | 2017-04-28 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册