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

回答の条件
  • 1人2回まで
  • 登録:2006/08/04 16:31:10
  • 終了:2006/08/05 09:59:33

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/08/04 16:45:39

ポイント60pt

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件

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

その他の回答(6件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/08/04 16:45:39ここでベストアンサー

ポイント60pt

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件

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

id:RandD No.2

RandD回答回数167ベストアンサー獲得回数52006/08/04 17:08:02

ポイント10pt

こちらはどうですか

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 /-- その結果をひっくり返す

id:saphil No.3

saphil回答回数36ベストアンサー獲得回数32006/08/04 17:14:35

ポイント10pt

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]

で、出来ました。

id:ota2244 No.4

ota2244回答回数77ベストアンサー獲得回数42006/08/04 17:16:47

ポイント10pt

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

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

id:savewood No.5

savewood回答回数2ベストアンサー獲得回数02006/08/04 18:05:07

ポイント10pt

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

 

SELECT TOP 1 *

FROM (

    SELECT TOP 3 *

    FROM TABLE

    ORDER BY ITEM

) DUMMY_NAME

ORDER BY ITEM DESC

 

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

id:pxb12663 No.6

pxb12663回答回数395ベストアンサー獲得回数142006/08/04 19:24:58

ポイント10pt

PostgreSQLなら

$array = pg_fetch_array($result,2);

で配列に代入出来ます。

id:Allashe No.7

Allashe回答回数59ベストアンサー獲得回数52006/08/04 21:11:35

ポイント10pt

IDを主キー列として、

SELECT TOP 3 * FROM TABLE ORDER BY ITEM

WHERE ID not in (

SELECT TOP 2 ID FROM TABLE ORDER BY ITEM)

コメントはまだありません

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

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

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

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