我正在尝试从表中选择所有记录,其中该表的某个键位于使用“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正常工作)。
答案 0 :(得分:0)
这是因为Sybase不支持子查询中的顶级选择。您需要调整查询以获得查询中所需的3个结果。