Sybase子查询中的TOP选择

时间:2017-12-13 09:59:13

标签: select sybase sybase-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%'
    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小提琴,但http://sqlfiddle.com没有Sybase引擎,我只有这个问题与Sybase(Oracle正常工作)。

1 个答案:

答案 0 :(得分:0)

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