#mysql #sql
Вопрос:
Есть ли способ создать IF
оператор в SQL, зависящий от значения, чтобы заменить ANY_VALUE из этого оператора? Пример:
WHERE
date BETWEEN :start AND :end
AND IF (:id, id IN (:id), ANY_VALUE(idcolumn))
Есть ли более продуктивный или более «красивый» способ?
Комментарии:
1. Вам нужно отфильтровать по переданной переменной или, если переменная не указана, выбрать все данные, верно?
2. ЕСЛИ (:идентификатор, идентификатор В (:идентификатор), ANY_VALUE(столбец идентификатора))
:id
Содержит одно значение или список значений (CSV и т. Д.)? Если второе, тоANY_VALUE(idcolumn)
означает «одна любая строка из:id
списка»?3. Ваш вопрос не совсем ясен, но если вам нужно получить отфильтрованные данные, когда переменная не равна нулю, и все данные, когда переменная равна нулю, то просто используйте
:id IS NULL OR id IN (:id)
4. @astentx, Правильно
5. Нет ничего лучше практической иллюстрации для объяснения теоретической проблемы