【问题标题】:How to Limit # of Rows Returned using Openquery on a Linked Server如何限制在链接服务器上使用 Openquery 返回的行数
【发布时间】:2020-02-07 07:59:57
【问题描述】:

我有一个 AS400 链接服务器,我正在尝试运行一些查询并获取一些样本集,但我不知道如何限制返回的行数。

我试过了:

SELECT * FROM OPENQUERY(LINKED, 'SELECT * FROM LINKED.APLUS.CUS WHERE CMSUSP != ''S'' LIMIT 100')

SELECT * FROM OPENQUERY(LINKED, 'SELECT TOP(100) * FROM LINKED.APLUS.CUS WHERE CMSUSP != ''S'' ')

我知道我可以将 TOP 添加到 SELECT FROM OPENQUERY,但是当我只需要 100 行时,我试图不让 AS400 返回 100k 行。

【问题讨论】:

  • 使用 openquery,您可以将语句传递给其他数据库引擎以执行。因此,您需要的任何功能都必须在该引擎使用的 sql 方言中实现。那么 - DB2(大概 - 如果您提供特定信息可能会有所帮助)以某种方式实现它吗?
  • 在我看来 LIMIT 应该做你想做的事。有吗?

标签: sql sql-server openquery


【解决方案1】:

根据我使用 AS400 系统的经验,我相信您正在寻找 FETCH FIRST N ROWS ONLY

SELECT * FROM ... WHERE ... ORDER BY ... FETCH FIRST 100 ROWS ONLY

在你的例子中是:

SELECT * FROM OPENQUERY(LINKED, 'SELECT * FROM LINKED.APLUS.CUS WHERE CMSUSP != ''S'' FETCH FIRST 100 ROWS ONLY')

建议包含ORDER BY 以确保结果一致。

有关更多详细信息,请参阅此问题和答案:How to do SQL select top N ... in AS400

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多