Использование динамического условия IN в представлении MySQL - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть представление MySQL, которое объединяет количество таблиц и выполняет некоторые вычисления при выборе. Я хочу динамически изменить несколько условий в представлении.

Для предложений 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

и выполнение команд

SET @myfield := 12;
SELECT * FROM myview

дай мне желаемый результат. (извините за синтаксические ошибки в примере)

Однако у меня есть некоторые параметры, которые я хочу использовать в условном предложении IN. Этот метод не работает, так как представление не может быть создано с условием IN следующим образом.

WHERE m.myfield IN (getmyfieldvalues())

Когда я пытаюсь создать такое представление, MySQL возвращает его на

WHERE m.myfield = getmyfieldvalues()

Почему это происходит и есть ли способ справиться с этим делом? специально создавать динамическое предложение IN в представлениях MySQL?

P.S. Я могу спроектировать представление без динамических условий, чтобы выбрать все и применить условия впоследствии, но это не то, что я хочу, поскольку это приводит к низкой производительности.

...