Возможно ли упростить множественное ОБЪЕДИНЕНИЕ ВСЕГО в mysql?

#mysql #sql #union

#mysql #sql #объединение

Вопрос:

У меня есть запрос MySQL, который всегда должен сравнивать 4 значения, мне нужно добавить эти значения со строками, используя ОБЪЕДИНЕНИЕ ВСЕХ, но этот код выглядит очень большим, и я хочу его упростить. Код следующий:

 SELECT
    trimestre,

IF ((meta = 0) OR (meta is null) or not(meta REGEXP '[0-9] '), :meta, meta) as valor
FROM
    (
        SELECT
            trimestre,
            valor AS meta
        FROM
            view_valores_indicadores
        WHERE
            anio = :anio
        AND codigo_indicador = :codigo_indicador
        AND alias_campo = 'meta'
        UNION ALL
            SELECT
                1,
                :meta
            UNION ALL
                SELECT
                    2,
                    :meta
                UNION ALL
                    SELECT
                        3,
                        :meta
                    UNION ALL
                        SELECT
                            4,
                            :meta
                        ORDER BY
                            trimestre ASC
    ) AS T
GROUP BY
    TRIMESTRE
  

Я хочу знать, возможно ли упростить это множественное ОБЪЕДИНЕНИЕ, как

 UNION ALL SELECT (row1, row1, row3...)
  

Комментарии:

1. используйте многоразовую вспомогательную таблицу с известными смежными идентификаторами

2. Как сказал @Drew, вы можете использовать вспомогательную таблицу, в которой находятся все эти вспомогательные идентификаторы. Тогда вам нужно использовать один из них UNION ALL вот так ...UNION ALL SELECT id, :meta From your_helper_table....

3. Не спешите «упрощать» код. Если это работает, и работает эффективно, то у вас не должно возникнуть проблем с этим.

4. Ну, наличие блока из ста или тысяч союзов в одном заявлении было бы довольно неловко, и эти ответы взяты с этого сайта. Объединения не масштабируются. Избегайте их, как чумы. Обычно признак ужасного дизайна

5. @Drew не ужасен, я считаю, что этот особый случай полезен