どのようにしてTSQLクエリ結果のn番目の行を取得できますか?クエリ結果でn番目の行を取得するにはどうすればよいですか?
がさんは言ってみましょう、私はこのSELECTの2行目を取得したい:
SELECT * FROM table
ORDER BY 2 ASC
どのようにしてTSQLクエリ結果のn番目の行を取得できますか?クエリ結果でn番目の行を取得するにはどうすればよいですか?
がさんは言ってみましょう、私はこのSELECTの2行目を取得したい:
SELECT * FROM table
ORDER BY 2 ASC
あなたがターゲットとしている、SQL Serverのバージョンは何? 2005以上の場合は、ROW_NUMBERを使用して行番号を生成し、その番号を使用して選択することができます。 http://msdn.microsoft.com/en-us/library/ms186734.aspx
WITH orderedtable AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY <your order here>) AS 'RowNumber'
FROM table
)
SELECT *
FROM orderedtable
WHERE RowNumber = 2;
ROW_NUMBER()rocks。 – MatBailie
あなたはMySQLのLIMIT
と同様の効果を達成するためにORDER BY ASC
/DESC
でTOP
を組み合わせたトリックを使用することができます。
SELECT TOP 2 * INTO #temptable FROM table
ORDER BY 2 ASC
SELECT TOP 1 * FROM #temptable
ORDER BY 2 DESC
またはTEMPTABLEずに、しかし、ネストされた文:
SELECT TOP 1 * FROM
(
SELECT TOP 2 * FROM table
ORDER BY 2 ASC
) sub
ORDER BY 2 DESC
あなたが実際に持ちたいものまですべての行を最初に選択し、2番目の行であなたが望むものと全く同じ逆にを注文するときに残りの最初のものだけを選択してください。
出典:http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=850&lngWId=5
+1これはどこでも使えます! –
一つの方法。
;with T(rownumber, col1, colN) as (
select
row_number() over (order by ACOLUMN) as rownumber,
col1,
colN
from
atable
)
select * from T where rownumber = 2
テーブルの構造(列)は何ですか? SQL Server、Oracle、Sybase ASE、DB2のためのものですか? –
それではSybase OO –
ええ、それについて忘れました:/ – HackedByChinese