2017-08-10 1 views
0

クエリの後に制限を適用するテーブルのビューを構築したいとします。ビューの後に制限を実行する

は私に説明してみましょう:

--This view dosen't work like I want: 
CREATE VIEW [test_view] AS 
     SELECT * 
     FROM test_table 
     LIMIT 200 

そして、このような単純なクエリを作る:私はこのようなビュー作成した場合

SELECT * 
FROM test_view 
WHERE testfield = 'a value' 

をこのクエリでは、最初の200の項目に一致するものを返しますが、私が欲しいのは、このよう

SELECT * 
FROM test_table 
WHERE testfield = 'a value' 
LIMIT 200 
にテーブルに直接適用された場合のように testfield = 'a value'と一致する最初の200以下の行を返すことがあります0

このフォームで動作するビューを作成することはできますか?

+0

制限する理由はありますか? – Isaiah3015

+0

@ Isaiah3015理由は、新しいbigestデータベースでクラッシュする古いアプリにパッチを当てる、アプリケーションのクラッシュが多い場合に条件に一致する500要素に結果をマップしたい –

+0

あなたの前提は、異なる値を持つ。すべてのレコードが同じであればLIMITできますが、私はそれをお勧めしません。私はすべてのVIEWを作成し、次にSELECTでDISTINCTを実行し、すべての値が同じかどうかを確認することをお勧めします。あなたはいつもそのように制限することができます。お役に立てれば。 – Isaiah3015

答えて

0

なぜSQLにはSELECT LEVELでこれらを制限する方法があるので、VIEWレベルで制限する必要があるのか​​分かりません。

CREATE VIEW [Test View] as Select * from [Test Table] Limit 200 

編集:200の値をいつでも変更することができます。これがあなたのサンプルに既にあるので、これが役立つかどうかは分かりません。構文は同じです。おそらくそれはあなたがそれを利用する方法でしょうか?あなたはSELECTレベルで制限することができますが:

私はその後、ユーザーが

Select * from View LIMIT 200 

EDIT 2がしたい行数を選択させるすべての結果に

CREATE VIEW [Test View] as Select * from [Test Table] 

グラブビューを作成することをお勧め選択されている値を指定し、その選択した値に基づいて値を制限する場合を除き、VIEWレベルではありません。これは単なる擬似コードですが、私はあなたが画像を得ることを望みます。

Select case when value=a then (Select * from table limit 200) 
      when value=b then (Select * from table limit 300) 
      when value=c then (Select * from table limit 400) 
+0

ありがとうございますが、sqliteはトップステントではありません –

+1

SQLLITEにはLIMITを使用してください。申し訳ありませんが、このタグは表示されませんでした。私を更新してみましょう – Isaiah3015

+0

'top'のないあなたのビューの例は、私がdosen'tの仕事の例として入れたのと同じコードです、wathはテーブルに適用されるクエリの後に制限500を挿入するのと同じです。 –

1

いいえ、そういうことはできません。ビュー内の行数を制限し、ビューで条件を指定していますが、これは正しい方法ではありません。制限したい場合は、希望の結果を得た後に制限してください。

+0

私はビューの行の数を制限しない私は私が望むwathを説明するために例でこれを置く –