【SQL SERVER2000】

SQL SERVER2000のSELECT文についてです。
検索結果を、指定した件数だけ取り出すことはできますか?
たとえば、検索結果が全部で10件あったとしても、先頭から数えて5件目までを表示させたい等。

ご存知の方よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2008/11/18 09:16:34
  • 終了:2008/11/18 10:45:11

回答(3件)

id:australiagc No.1

australiagc回答回数467ベストアンサー獲得回数902008/11/18 09:46:10

ポイント26pt

SQL Server 2000にはこの機能は無いので、苦肉の策として対象のレコードまでの件数をカウントするしかないようです。

http://thetrainerph.spaces.live.com/Blog/cns!9F717AF2A2401F0F!639.entry

SELECT *,

(SELECT SUM(1) FROM specimen_source_ref WHERE specimen_source_rcd <= reg.specimen_source_rcd) AS 'RowNumber'

FROM specimen_source_ref reg

これで何番目のレコードかが分かるので(RowNumber)、はじめの5件だけならば、WHERE RowNumber <= 5などを指定すればできます。

id:lame-delegate No.2

lame-delegate回答回数85ベストアンサー獲得回数102008/11/18 10:12:04

ポイント27pt

SELECT TOP(5) * FROM テーブル名

でいけますよ

id:fester No.3

fester回答回数124ベストアンサー獲得回数202008/11/18 10:13:35

ポイント27pt

TOP句を使います。


SELECT TOP 5 顧客名,入社日 FROM 顧客 ORDER BY 入社日 ASC


参考

http://www.sqlpassj.org/dbe/kaihatsu/06.aspx

  • id:db_Magician
    皆様どうもありがとうございました。
    TOP句というものがあるのですね。
    ORDER BYを指定した場合はその順番で上からn件、そうでない場合はPK順にn件
    取ってこれるということでしょうか。
  • id:fester
    >PK順に・・・
    そうでない場合は順序は保障されないでしょう。
  • id:db_Magician
    確かにそうでしたね…。
    TOPは必ずORDER BYとセットで使うことになりますね。
  • id:tdoi
    参考までに。
    SQL ServerではLIMIT句が利用できないので、

    SELECT * FROM <table_name> WHERE <condition> LIMIT 0, 10;

    SELECT TOP 10 * FROM <table_name> WHERE <condition>;

    として対応できます。
    これだけだとページング処理には対応できないので、次のことも知っておくと便利です。

    SELECT * FROM <table_name> WHERE <condition> LIMIT 20, 30;

    SELECT TOP 10 * FROM <table_name> WHERE <condition> AND id NOT IN
    (SELECT TOP 20 id FROM <table_name> WHERE <condition>)

    として実現できます。
  • id:db_Magician
    なるほど!
    20件目までのidを除外することで、20件目~30件目というような
    条件も対応できるわけですね。
    ありがとうございます!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません