运算符的WHERE优先级高于UNION。您的查询实际上是:
SELECT * FROM ri
UNION
SELECT * FROM pj
UNION
SELECT * FROM td
UNION
SELECT * FROM cert
UNION
SELECT * FROM outros WHERE grupo = 'Grupo 1'
该WHERE条款仅适用于决赛SELECT * FROM outros。您要么需要将其添加WHERE到每个具有grupo列的子查询中(您没有指定哪个,所以我假设全部):
SELECT * FROM ri WHERE grupo = 'Grupo 1'
UNION
SELECT * FROM pj WHERE grupo = 'Grupo 1'
UNION
SELECT * FROM td WHERE grupo = 'Grupo 1'
UNION
SELECT * FROM cert WHERE grupo = 'Grupo 1'
UNION
SELECT * FROM outros WHERE grupo = 'Grupo 1'
或者您可以使用这样的子查询(未经测试,语法可能已关闭,抱歉):
SELECT * FROM
(
SELECT * FROM ri
UNION
SELECT * FROM pj
UNION
SELECT * FROM td
UNION
SELECT * FROM cert
UNION
SELECT * FROM outros
)
WHERE grupo = 'Grupo 1'
顺便说一句,您可能不想*在UNION选择中使用,因为如果其中一个表架构发生更改,查询将失败。如果可能,最好显式选择所有列。