SQL Server 2008 のテーブルから 100 ~ 150 行を取得したいのですが、どうすればよいですか? そうする方法はありますか?検索制限キーワードはmysqlで利用できますが、SQLサーバーでは一般的なテーブル手法を使用しますが、そのようにしたくありませんが、Mysqlで利用できる他の方法はありますか?
質問する
2968 次
4 に答える
0
于 2012-05-29T13:06:20.677 に答える
0
select * from
(select row_number() over (order by @column) as row,* from Table) as t
where row between 100 and 150
@column をテーブル ウィッチの列に置き換えると、結果の順序付けによく使用されます
于 2012-05-29T13:55:22.783 に答える
0
SQL 2005 以降には、ROW_NUMBER() 関数があります。ただし、MySQL と SQL Server の両方で機能するものが必要な場合は、使用したことがないため、これが MySQL で利用できるかどうかはわかりません。
http://msdn.microsoft.com/en-us/library/ms186734.aspx
リンクされたページで最も関連性が高いと思われる例は次のとおりです。ここでは、クエリの結果が日付順に並べられ、その結果セットの行 50 から 60 が返されます。
USE AdventureWorks2012;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Sales.SalesOrderHeader
)
SELECT SalesOrderID, OrderDate, RowNumber
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;
于 2012-05-29T13:13:23.587 に答える
0
実際、これを行う最も安価な方法は、top を使用してから、row_number() を使用することです。
select *
from (select *, row_number() over (order by (select NULL)) as rownum
from (select top 150 t.*
from t
) t
) t
where rownum >= 100
ただし、1つ注意があります。リレーショナル テーブルには行 100 から 150 のようなものはありません。これらは本質的に順序付けされていないためです。順序を指定する必要があります。このためには、次の順序で注文する必要があります。
select *
from (select *, row_number() over (order by <field>) as rownum
from (select top 150 t.*
from t
order by <field>
) t
) t
where rownum >= 100
于 2012-05-29T13:31:51.380 に答える