我有一个MySQL视图,该视图连接许多表并在选择后进行一些计算。我想在视图中动态更改一些条件。
对于条件为* header Authorization = signIn.token
的where子句,我可以成功地利用MySQL函数来创建具有此答案https://stackoverflow.com/a/19948251/10264371中给出的动态条件的视图
例如,我可以创建一个这样的视图和功能。
=
并执行命令
CREATE VIEW myview AS
SELECT *
FROM mytable m
WHERE m.myfield = getmyfield()
CREATE
FUNCTION getmyfield()
RETURNS int(11)
return @myfield
给我想要的结果。 (请排除示例中的语法错误)
但是我有一些要在IN条件子句中使用的参数。此方法失败,因为无法使用IN条件创建视图,如下所示。
SET @myfield := 12;
SELECT * FROM myview
当我尝试这样创建视图时,MySQL会将其还原为
WHERE m.myfield IN (getmyfieldvalues())
为什么会发生这种情况,有没有办法处理这种情况?专门在MySQL视图中创建动态IN子句?
P.S。我可以设计没有动态条件的视图来选择所有条件,然后再应用条件,但这不是我想要的,因为那样会导致性能下降。