带函数调用的mysql视图

r1wp621o  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(174)

我有一个视图,它使用自定义函数将基础表中的一列拆分为string。我在视图定义中还有一个where子句,用于限制返回的行。当我从没有where子句的视图中选择时,一切都按预期工作。当我在视图本身上添加一个where子句,并在函数生成的一列上添加一个过滤器时,它似乎没有在视图定义上使用内部where子句来确定哪些行被传递给外部where子句调用的函数。
最好用一个例子来解释这一点。我用的是mariadb 10.2.11

Table T1

ID      Text        Status
1       a,b,c       Completed
2       a,b,c,d     Failed
3       a,b,c       Completed
4       a,b,c       Completed

view C1 defined as 

select id, 
stringsplit(Text,1) as ColA, 
Status 
from T1
where Status = 'Completed';

select * from C1 where ColA = 'a';

在最后的select中,我注意到应该由内部where子句过滤掉的行中的数据被传递到由outer where cola='a'子句生成的stringsplit函数调用中。
我本以为视图的内部where会删除所有where status!='完成'before where cola='a'子句。我错过什么了吗?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题