在查看

时间:2017-08-10 16:23:20

标签: sql sqlite

我想构建一个在查询后应用限制的表的视图。

让我解释一下:如果我创建这样的视图:

--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个项目中的匹配项,但我想要的是返回与testfield = 'a value'匹配的前200行或更少行,如果以这种方式直接应用于表格

SELECT * 
FROM test_table 
WHERE testfield = 'a value' 
LIMIT 200

是否可以构建一个以这种形式工作的视图?

2 个答案:

答案 0 :(得分:1)

不,不可能做那样的事情。您正在限制视图中的行数并在视图上给出条件,这是不正确的方法。如果你想限制,那么在得到你想要的结果后限制它。

答案 1 :(得分:0)

不确定为什么需要限制在VIEW级别,因为SQL有一种方法可以在Select LEVEL限制它们。

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

编辑:您始终可以将200的值更改为其他值。不确定这是否有帮助,因为您的样本中已有此功能。语法是一样的。也许这只是你利用它的方式?

我建议创建一个抓取所有结果的视图

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

然后让用户选择他们想要的行数

 Select * from View LIMIT 200

编辑2:您可以在SELECT级别进行限制,但不能在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)