Переместите ваши условия в условие WHERE
внутри каждого UNION
SELECT
(вы не можете поместить ничего, кроме SELECT
между UNION
).
SELECT '1', 'VD', 'Janeiro',0,'0'
UNION
SELECT '1', 'VD', 'Janeiro',0,'1'
WHERE (select count(*) ....where cond1...) = 0
UNION
SELECT '1', 'AM', 'Janeiro',0,'2'
WHERE (select count(*) ....where cond2...) = 0
UNION
SELECT '1', 'VM', 'Janeiro',0,'3'
WHERE (select count(*) ....where cond3...) = 0
Кроме того, я отмечаю из ваших условий, что вы проверяете, существует ли строка, выполняя count = 0
. Замена этого фактическим значением NOT EXISTS
будет быстрее, поскольку движку SQL не нужно фактически считать все строки для сравнения с 0, он сразу же вернется, когда будет найдена строка.
SELECT '1', 'VD', 'Janeiro',0,'0'
UNION
SELECT '1', 'VD', 'Janeiro',0,'1'
WHERE NOT EXISTS (select 1 ....where cond1...)
UNION
SELECT '1', 'AM', 'Janeiro',0,'2'
WHERE NOT EXISTS (select 1 ....where cond2...)
UNION
SELECT '1', 'VM', 'Janeiro',0,'3'
WHERE NOT EXISTS (select 1 ....where cond3...)