你知道如何說服SQL Server來考慮視圖中的WHERE子句? 它看起來像SQL Server正在運行只是我的看法,評價TOP 1,然後應用「其中id = N」子句可以過濾視圖的結果集。 例子:凡與在SQL Server視圖頂互動
create table mytable (id int, name varchar(64));
insert into mytable values (5, 'BOB');
insert into mytable values (5, 'ROBERT');
insert into mytable values (5, 'SMITH, ROBERT');
insert into mytable values (8, 'A.J.');
insert into mytable values (8, 'Al J.');
insert into mytable values (8, 'Albert Johnston');
select * from mytable;
+----+-----------------+
: id : name :
+----+-----------------+
: 5 : BOB :
: 5 : ROBERT :
: 5 : SMITH, ROBERT :
: 8 : A.J. :
: 8 : Al J. :
: 8 : Albert Johnston :
+----+-----------------+
create view myview as
select top 1 id, name
from mytable
order by len(name) desc
問題:
-- bad, empty result set
-- (I want this to answer 5, 'SMITH, ROBERT')
select * from myview where id = 5
這些工作按預期:
-- good, answers 8, 'Albert Johnston'
select * from myview
-- good, also answers 8, 'Albert Johnston'
select * from myview where id = 8
現在沒有觀點:
-- good, answers 5, 'SMITH, ROBERT'
select top 1 id, name
from mytable
where id = 5
order by len(name) desc