0

SQL Server 2008 のテーブルから 100 ~ 150 行を取得したいのですが、どうすればよいですか? そうする方法はありますか?検索制限キーワードはmysqlで利用できますが、SQLサーバーでは一般的なテーブル手法を使用しますが、そのようにしたくありませんが、Mysqlで利用できる他の方法はありますか?

4

4 に答える 4

0

SQL制限を使用する

http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

于 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 に答える