ms sqlサーバーで結果をページングしようとしていますが、正しい結果を得るのに問題があります。私は mysql:s LIMIT と同じ結果を達成したいと思っており、このモデルを使用してそれを実行しようとしています:
SELECT * FROM (
SELECT TOP x * FROM (
SELECT TOP y fields
FROM table
WHERE conditions
ORDER BY table.field ASC) as foo
ORDER by field DESC) as bar
ORDER by field ASC
から: http://josephlindsay.com/archives/2005/05/27/paging-results-in-ms-sql-server/
上位 30 行をリストする元のクエリは次のとおりです。
SELECT TOP 30 pt.[BSNR], t.ID, pt.RESDATUMTID, pt.LAND1, pt.HPL1, pt.ANKDATUMTID, pt.LAND2, pt.HPL2
FROM [statistik2].[dbo].[ttrip] AS t
JOIN [statistik2].[dbo].[tparttrip] AS pt
ON t.ID = pt.TRIP_ID
WHERE t.DBKRDAT > '2012-06-27'
ORDER BY pt.BSNR DESC, t.ID, pt.RESDATUMTID
そして私の試みは:
SELECT * FROM (
SELECT TOP 10 * FROM (
SELECT TOP 30 pt.ID AS PTID, pt.[BSNR], t.ID, pt.RESDATUMTID, pt.LAND1, pt.HPL1, pt.ANKDATUMTID, pt.LAND2, pt.HPL2
FROM [statistik2].[dbo].[ttrip] AS t
JOIN [statistik2].[dbo].[tparttrip] AS pt
ON t.ID = pt.TRIP_ID
WHERE t.DBKRDAT > '2012-06-27'
ORDER BY pt.BSNR DESC, t.ID DESC, pt.RESDATUMTID
) as pttt
ORDER BY pttt.PTID DESC) AS ptttt
ORDER BY ptttt.PTID
クエリからの出力: http://speedy.sh/5NQeq/sqloutput.txt
誰かが私が間違っていることを説明できますか?