4

シナリオ: Visual FoxPro データベースから情報を取得する必要があります。ただし、これに対して大規模なクエリを実行すると、システムがロックされる傾向があります。これを解決するために、クエリが一定の時間を超えて実行された場合にクエリをキャンセルし、返される行数を制限する制限を設けました。

「SELECT TOP ###」を使用してクエリを実行する方法はありますが、ステートメントで見つかった実際の行数も返しますか? または、クエリを 2 回実行する唯一の方法ですか? (理由は、引き続きクエリを実行することができますが、何が起こっているかをユーザーに通知するためです。つまり、「### 見つかったアイテムの最初の ### が表示されました」)。

私の最初の試みは、単に「COUNT(*)」をステートメントの select 部分に追加することでしたが、それは私が探していたものを完全には達成しませんでした (正しい数の行が返されましたが、1 行しか返されませんでした)残りのデータ)。

4

2 に答える 2

2

質問を正しく理解していれば、副選択を行うことができますが、それは返されるすべての行に対して count SQL を呼び出すことを意味します。

select top 10 field1, field2, (select count(*) from table) as totalrows from table

これにより、テーブル内のすべての行の数を含む、totalrows と呼ばれる追加の列を持つ上位 10 行が得られます。

個人的には、別のクエリを実行して、上位n行とカウントを取得するだけです。

于 2010-02-04T14:43:42.773 に答える