4

Oracle では、任意のクエリで返される行数は、「仮想」rownum列でフィルタリングすることによって制限できます。次の例を考えてみましょう。この例では、最大で 10 行が返されます。

SELECT * FROM all_tables WHERE 行番号 <= 10

Ingres で同様のことを行う簡単で一般的な方法はありますか?

4

4 に答える 4

6

私の答えを露骨に変えます。"Limit 10" は MySql などで機能し、Ingres は使用します

Select First 10 * from myTable

参照

于 2008-09-08T12:48:50.520 に答える
2

select * from myTable limit 10 は機能しません。

1つの可能な解決策を発見しました:

    TID は「タプル識別子」または行アドレスです。TID には
    ページ番号と、行に対する相対オフセットのインデックス
    ページ境界。TID は現在、4 バイトの整数として実装されています。
    TID は、テーブル内の各行を一意に識別します。すべての行には
    TID。TID の上位 23 ビットは、ページのページ番号です。
    行が発生する場所。TID は、名前によって SQL でアドレス指定できます。
    「チット」

したがって、次のようなものを使用して、返される行数を制限できます。

select * from SomeTable where tid < 2048

このメソッドは、返す行数が多少不正確です。ただし、テストを高速化するために非常に大きな結果セットから返される行を制限したいだけなので、私の要件には問題ありません。

于 2008-09-08T13:23:11.420 に答える
0

ねえクレイグ。すみません、忍者編集しました。いいえ、リミット 10 は機能しません。すべての人がサポートする標準 SQL だと思っていたのは間違いでした。Ingres は (ドキュメントによると) 「First」を使用して問題を解決します。

于 2008-09-08T13:27:04.813 に答える
0

ストックホルムの忍者編集者さん!「最初の X」がうまく機能し、私が思いついたよりもはるかに優れたソリューションであることを確認しました。ありがとうございました!

于 2008-09-08T13:29:19.223 に答える