我想构建一个在查询后应用限制的表的视图。
让我解释一下:如果我创建这样的视图:
--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
是否可以构建一个以这种形式工作的视图?
答案 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)