我遇到一种情况,我需要根据特定条件从Sybase表中选择记录
select top 2 *
from CERD_CORPORATE..BOOK
where id_bo_book in('5330')
limit(2,3)
答案 0 :(得分:0)
您不能为LIMIT
条件使用范围,但是可以为此使用OFFSET关键字:
SELECT top 2 * FROM CERD_CORPORATE.BOOK
WHERE id_bo_book in('5330')
LIMIT 2 OFFSET 1;
答案 1 :(得分:0)
在ASE 12.5.1及更高版本上,可以使用“ SQL派生表”或“内联视图”完成此操作。该查询要求每一行都有唯一的键,以便表可以与自身连接,并且可以返回键值小于要连接的行的行数。这样会给出一个单调递增的数字,用于指定极限和偏移量。
limit和offset的等效项是与x.rowcounter比较的值。
select
x.rowcounter,
x.error,
x.severity
from
(
select
t1.error,
t1.severity,
t1.description,
count(t2.error) as rowcounter
from
master..sysmessages t1,
master..sysmessages t2
where
t1.error >= t2.error
group by
t1.error,
t1.severity,
t1.description
) x
where
x.rowcounter >= 50
and x.rowcounter < 100
SQL派生表最早可用于Sybase ASE 12.5.1 SQL Derived Tables
示例中使用master..sysmessages提供了一个合理的(10,000行)数据集进行实验。