-1

Web サイトのページの行を選択する C# コードから Oracle データベースへのリクエストを作成する必要があります。たとえば、2 ページ目の 100 から 200 までの行を取得したい。実際に機能するコードを見つけました

SELECT * FROM
(
   SELECT a.*, rownum r__
   FROM
   (
      SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
      ORDER BY OrderDate DESC, ShippingDate DESC
   ) a
   WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)

動作します。このブロックをラップ内で変更するときに使用できます

SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
ORDER BY OrderDate DESC, ShippingDate DESC

しかし、それはどのように機能しますか?理解できません。SQL リクエストには精通していますが、

SELECT a.*, rownum r__  

そして何ですか

 ) a

FROMラップの後?

このラップについて説明していただけますか?

4

1 に答える 1

1

select a.*, rownum -> テーブル/テーブル エイリアス a からすべてのレコードを行番号と共に選択して、サブセットを選択できるようにします。

(SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%' ORDER BY OrderDate DESC, ShippingDate DESC) a

'a' をテーブル エイリアスとして作成し、それを外部選択テーブルのテーブルとして扱うことができます。

テーブル構造を変更するとコードが破損する可能性があるため、 select * は悪い習慣と見なされます。

于 2013-04-22T17:36:27.023 に答える