人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQL ServerでSELECT * FROM TABLE ORDER BY ITEM の結果の最初の1件目を取り出すのは、TOP 1かと思いますが、3件目だけ取り出したい場合は、どうすればよいのでしょうか?

●質問者: simplestyle
●カテゴリ:コンピュータ
✍キーワード:SELECT SQL Server TOP
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● きゃづみぃ
●60ポイント ベストアンサー

http://www.sqlpassj.org/bunkakai/web/series/ado/04.aspx

SELECT TOP 1 * FROM

(SELECT TOP 3 * FROM TABLE ORDER BY ITEM) TABLE ORDER BY ITEM DESC

まず、先頭から3件レコードを抽出し、それを逆順にして 先頭1件

抽出すればいいでしょう。


2 ● RandD
●10ポイント

こちらはどうですか

http://72.14.235.104/search?q=cache:QEAWSFG6PA8J:oshiete1.go...

たとえば、「2件目から2件」、「3件目から3件」?「n件目からm件分」ですよね。

コード:

--------------------------------------------------------------------------------

SELECT *

FROM (

SELECT TOP m *

FROM (

SELECT TOP n + m

column clause

FROM table

WHERE where clause

ORDER BY order clause ASC /-- 最初からページの最後のレコードまで

)

ORDER BY order clause DESC /-- ページの最後から最初のレコードまで

)

ORDER BY order clause ASC /-- その結果をひっくり返す


3 ● saphil
●10ポイント

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2443...



SELECT TOP 1 * FROM [table]

WHERE([column] NOT IN

(SELECT TOP 2 [column] FROM [table]

ORDER BY [column]) )

ORDER BY [column]

で、出来ました。


4 ● ota2244
●10ポイント

SQL Server 2005 であればROW_NUMBER関数を使用すれば可能です。

それ以前の場合は、Nextなどを使用して該当のレコードに移動しないと取得することは出来ないと思います。


5 ● savewood
●10ポイント

ちょっとスマートじゃないかも知れませんが…

 

SELECT TOP 1 *

FROM (

    SELECT TOP 3 *

    FROM TABLE

    ORDER BY ITEM

) DUMMY_NAME

ORDER BY ITEM DESC

 

TOP 3 で上位3件を取り出したあと、さかさまに並べ替えて TOP 1 を使っています。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ