【发布时间】:2020-02-04 07:48:10
【问题描述】:
我想知道是否可以像在 MS SQL 中一样在 Informix 中选择每 n 行?!
类似
SELECT * FROM <TABLE> order by <COLUMN> ASC limit 1 OFFSET 4
只是没用。我们必须使用驱动程序版本 4.10.FC9DE。
我的目标是只从包含大约 350 个条目的表中取回每 5 行。对于实现这一目标的每一个提示,我都很高兴。
【问题讨论】:
标签: informix
我想知道是否可以像在 MS SQL 中一样在 Informix 中选择每 n 行?!
类似
SELECT * FROM <TABLE> order by <COLUMN> ASC limit 1 OFFSET 4
只是没用。我们必须使用驱动程序版本 4.10.FC9DE。
我的目标是只从包含大约 350 个条目的表中取回每 5 行。对于实现这一目标的每一个提示,我都很高兴。
【问题讨论】:
标签: informix
我建议这个解决方案每隔 5 行选择一次:
首先我将所有行从 1 开始编号,然后选择 MOD 5 为 0 的每一行
SELECT t.*
FROM (SELECT *, SUM(1) OVER (ORDER BY <COLUMN>) AS num
FROM <TABLE> ) AS t
WHERE MOD(t.num, 5) = 0
当然,这不是最有效的方法
【讨论】:
select skip 4 first 1 *
from <table>
order by <column> asc
您可以在以下位置查看更多信息:
https://www.ibm.com/support/knowledgecenter/en/SSGU8G_14.1.0/com.ibm.sqls.doc/ids_sqs_0987.htm
【讨论】:
每 5 行选择 1 个:
SELECT * FROM <TABLE> WHERE mod(rowid, 5) = 0;
每 10 行选择 1 个:
SELECT * FROM <TABLE> WHERE mod(rowid, 10) = 0;
【讨论】: