Sybase子查询中的TOP选择

问题描述 投票:3回答:1

我试图从表中选择所有记录,其中该表的某个键位于用“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工作正常)。

select sybase sybase-ase
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.