【问题标题】:TOP selection in Sybase subquerySybase 子查询中的 TOP 选择
【发布时间】:2018-05-27 04:09:43
【问题描述】:

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

【问题讨论】:

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

标签: select sybase sap-ase


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2018-02-02
    • 1970-01-01
    • 2010-12-18
    • 2013-10-14
    • 2017-07-19
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多