【发布时间】:2017-05-02 06:28:47
【问题描述】:
select d.order_type from migu_td_aaa_order_log_d d where exists(select 1
from migu_user r where r.user_id = '156210106' and r.user_num =
d.serv_number) and d.product_id in ('2028594290','2028596512','2028597138' )
order by d.opr_time desc limit 1
上面的sql为什么失败,说明: 失败:SemanticException [错误 10002]:第 4:11 行无效列引用“opr_time”
但下面的工作:
select temp.order_type from (
select d.* from migu_td_aaa_order_log_d d where exists(select 1 from
migu_user r where r.user_id = '156210106' and r.user_num = d.serv_number)
and d.product_id in ('2028594290','2028596512','2028597138' ) order by
d.opr_time desc limit 1) temp;
这个也很好用,而且比第二个效率高:
select d.* from migu_td_aaa_order_log_d d where exists(select 1 from
migu_user r where r.user_id = '156210106' and r.user_num = d.serv_number)
and d.product_id in ('2028594290','2028596512','2028597138' )
order by d.opr_time desc limit 1
我只需要获取 order_type 字段,所以即使第二个有效,但它花费的时间要多得多。 谁能帮我? 非常感谢!
【问题讨论】: