0

收到此错误:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rMin left join select * from  ( ( select  symbol,(dt) as dt,callPut,bid,ask,stri' at line 15

在以下查询中:

            select * from (
            select * from 
            (
            (
            select 
            symbol,(dt) as dt,callPut,bid,ask,strike,maturity,`Open Int`,impVol,theta,delta from bats.Opt where impVol>0 
            ) as a1
            inner join
            (select 
            symbol,min(dt) as dt from bats.Opt where impVol>0 
            group by symbol
            ) as b1
            on a1.symbol=b1.symbol and a1.dt=b1.dt 
            )
            as rMin
            left join
            select * from 
            (
            (
            select 
            symbol,(dt) as dt,callPut,bid,ask,strike,maturity,`Open Int`,impVol,theta,delta from bats.Opt where impVol>0 
            ) as a1
            inner join
            (select 
            symbol,max(dt) as dt from bats.Opt where impVol>0 
            group by symbol
            ) as b1
            on a1.symbol=b1.symbol and a1.dt=b1.dt 
            )
            as rMax

            on rMax.symbol=rMin.symbol
            )
4

1 回答 1

1

我将从格式化查询开始,以便您可以轻松阅读,匹配括号等。

然后,我会运行每个子查询以确保它们在语法上是正确的。

但是,在此之前,我会在最后一个右括号之后放置一个表别名。MySQL 要求from子句中的子查询具有表别名。诚然,这个错误是更具描述性的“每个派生表都必须有自己的别名”,因此这可能无法解决整个问题。

于 2013-11-02T18:29:02.413 回答