У меня есть образец SQL Как и
SELECT id, age, department
FROM User
WHERE
age < 50 AND id > 100 AND
(
department = 'IT' OR department = 'DEVOPS' OR department = 'ACCOUNTING' .... more OR conditions on department
)
Мне нужно преобразовать это SQL в несколько SQL-кодов, которые объединяются UNION ALL (где сохраняется исходный лог c ).
Желаемый результат:
(
SELECT id, age, department
FROM User
WHERE age < 50 AND id > 100 AND department = 'IT'
)
UNION ALL
(
SELECT id, age, department
FROM User
WHERE age < 50 AND id > 100 AND department = 'DEVOPS'
)
UNION ALL
(
SELECT id, age, department
FROM User
WHERE age < 50 AND id > 100 AND department = 'ACCOUNTING'
)
UNION ALL
....further conditions
Битовый фон
Мы используем PRESTO DB в качестве SQL двигателя. Мы нашли 1 ограничение, при котором, если запрос большой и имеет более 1000 условий И / ИЛИ, он не выполняется. Одним из решений является сокращение условий через UNION. https://support.treasuredata.com/hc/en-us/articles/360001457447-Presto-Query-FAQs
Может ли это быть достигнуто программно с помощью SQL библиотек синтаксического анализатора?