1

私はsybaseデータベースを使用しています。
テーブルから n 行ごとに選択する必要がありますselfjoin(id,salary);

私が使う

select top 1 * from (select top 4 * from selfjoin order by id desc) order by id

エラーが発生します。

An ORDER BY clause is not allowed in a derived table.

以下のSQLもエラーになります

select id from selfjoin order by id asc limit 2
--error :-`Incorrect syntax near 'limit'`

また、以下のSQLはエラーをスローします。

SELECT ROW_NUMBER() OVER (ORDER BY id ASC) AS rownumber,salary from selfjoin;
--error :- `Incorrect syntax near the keyword 'OVER'.`

このリンクも読みましたが、クエリが機能していません。このページもチェックしましたが、正しい結果が得られませんでした。

質問の変更:- 表の給与は昇順です。つまり、n 番目の行は給与の昇順に従って検索されます。

4

2 に答える 2

0

以下のクエリをチェックしてください:-

SELECT * from selfjoin s1 where (n-1) =(select count(id) from selfjoin s2 where s1.id>s2.id)

ここで、n は行番号です

于 2013-02-07T09:56:45.607 に答える
0

id が連続した増分番号である場合、次のようなことができます:-

create table #tmp2(id numeric identity,name char(9))  
insert into #tmp2 values("B")    
insert into #tmp2 values("C")   
insert into #tmp2 values("D")  
insert into #tmp2 values("E")  
insert into #tmp2 values("F")  
insert into #tmp2 values("G")  
insert into #tmp2 values("H")  
insert into #tmp2 values("I")  
insert into #tmp2 values("J")  
insert into #tmp2 values("K")  
insert into #tmp2 values("L")  

select t1.* from #tmp2 t1,#tmp2 t2  
where t1.id=t2.id*2 ---(nth number)  

または、id が 1 から開始されていない場合

select t1.* from #tmp2 t1,#tmp2 t2
where t1.id=((t1.id+1)-t2.id)*2 ---(nth number)

結果:-

ID名
2 C
4 E
6 G
8 I
10 K

于 2013-02-07T13:34:21.823 に答える