Select Sybase子查询中的顶部选择

Select Sybase子查询中的顶部选择,select,sybase,sap-ase,Select,Sybase,Sap Ase,我试图从表中选择所有记录,其中该表的某个键位于用“TOP 10”进行的键子选择中 我的查询如下所示: select * from FXKAUD_E_DBF events where events.M_LINK in ( select top 3 header.M_LINK from FXKAUD_H_DBF header where header.M_TYPE = 1 and header.M_STATUS LIKE '%Ended successfully%'

我试图从表中选择所有记录,其中该表的某个键位于用“TOP 10”进行的键子选择中

我的查询如下所示:

select * from FXKAUD_E_DBF events
where events.M_LINK in
(
    select top 3 header.M_LINK
    from FXKAUD_H_DBF header
    where header.M_TYPE = 1 and header.M_STATUS LIKE '%Ended successfully%'
    order by header.M_LINK desc
)
内部子查询应该选择表FXKAUD_H_DBF中M_LINK的前3个值。 如果我单独执行,效果会很好

但是,当我尝试执行外部查询(
select*from FXKAUD_E_DBF events where events.M_LINK in
)时,我收到以下错误消息:

An error occurred when executing the SQL command:
select * from FXKAUD_E_DBF events
where events.M_LINK in
(
    select top 3 header.M_LINK
    from FXKAUD_H_DBF header
    where ...
Incorrect syntax near the keyword 'top'. [SQL State=ZZZZZ, DB Errorcode=156] 

Execution time: 0s

1 statement(s) failed.
有人有主意吗?我运行的是Sybase ASE 11/12/15-TDS 5.5。
我非常乐意提供一个SQL FIDLE,但没有Sybase引擎,我只有Sybase的问题(Oracle工作正常)。

这是因为Sybase不支持子查询中的顶部选择。你需要调整你的查询以获得你想要的3个查询结果

虽然ASE在派生表中支持
top
命令,但在子查询(例如,您的查询)中不支持
top
;还要记住,ASE不支持子查询或派生表中的order by子句