У меня есть представление 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. Я могу спроектировать представление без динамических условий, чтобы выбрать все и применить условия впоследствии, но это не то, что я хочу, поскольку это приводит к низкой производительности.