2015-10-16 56 views
0

时,这是我的发言:星火SQL使用连接两个或多个表的两个SELECT语句

val Porders = sqlContext.sql(
    """SELECT count(STATUS_CD) 
    FROM s_order 
    WHERE STATUS_CD = 'pending' AND ROW_ID IN 
     (SELECT so.ROW_ID FROM s_order so 
     JOIN s_order_item soi 
     ON so.ROW_ID = soi.ORDER_ID 
     JOIN s_order_type sot 
     ON so.ORDER_TYPE_ID = sot.ROW_ID 
     JOIN s_product sp 
     ON soi.PROD_ID = sp.ROW_ID 
     WHERE (sp.NAME like '%VIP%' OR sp.NAME like '%BIZ%' OR sp.NAME like '%UniFi%') 
     AND LOWER(sot.NAME) = 'new install') 
    """) 

我收到以下错误:

ERROR : java.lang.RuntimeException: [3.3] failure: identifier expected 
(SELECT so.ROW_ID FROM s_order so JOIN s_order_item soi 
^

可能是什么原因?

回答

1

原因,为什么发生这种情况是不支持子查询:请参阅Spark-4226

即使查询像

sqlContext.sql(
    """SELECT count(STATUS_CD) 
    FROM s_order 
    WHERE STATUS_CD = 'pending' AND ROW_ID IN 
     (SELECT * FROM s_order) 
    """) 

目前没有工作(星火SQL 1.5.1发言)

尝试通过加入,例如更换你的子查询https://dev.mysql.com/doc/refman/5.1/en/rewriting-subqueries.html

+0

谢谢你... Martin Senne – praveen

+0

不客气。不要忘记加票或回答接受;) –

+0

如何在spark sql中的FROM子句中使用子查询 – praveen