Как в SQL (MySQL) создать запрос или по переменной, или по всем записям?

#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. Нет ничего лучше практической иллюстрации для объяснения теоретической проблемы