0

SQL でレコードの前半を表示するには、SELECT TOP 50 PERCENT * FROM TableName; を使用します。同様に、レコードの最後の 50%を表示する解決策はありますか?そのテーブルにどれだけのレコードが存在するかわからないと考えてください。

4

3 に答える 3

3

反対の順序で並べ替えるだけで、必要に応じて外側の選択で再度並べ替えます

select * from
(
  select top 50 percent * 
    from table 
  order by col1 desc
) order by col1 asc
于 2013-07-08T17:04:59.610 に答える
0

NTILE(n)ウィンドウ関数は、このようなタイプの作業用に設計されています。結果セットを同じ行数のグループに分割し、1 から までの番号を付けます(count of rows)/n(この分割が整数にならない場合、微妙な違いがあります。ドキュメントを参照してください)。

;with cte as(select *, ntile(2) over(order by colname) as rn from tablename)
select * from cte where rn = 2

これは、結果セットが 2 つのグループに分割されることを意味し、前半は get rn = 1、後半はrn = 2.

于 2015-09-03T19:08:16.157 に答える
0

後でレコードが挿入されるほど高くなるテーブルの ID があると仮定します。

おそらく、それをスクリプト化する必要があります。擬似コード:

num = numRecords(table) / 2
SELECT * FROM table ORDER BY ID DESC LIMIT 'num'

または、選択した言語に応じて、その趣旨の何か。

これまたはいくつかの内部選択のいずれかであり、可能な限り回避しようとしています。

于 2013-07-08T17:04:50.117 に答える