在MySQL视图中使用动态IN条件

时间:2018-09-05 03:10:30

标签: mysql mysql-8.0

我有一个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。我可以设计没有动态条件的视图来选择所有条件,然后再应用条件,但这不是我想要的,因为那样会导致性能下降。

0 个答案:

没有答案