运算符的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
选择中使用,因为如果其中一个表架构发生更改,查询将失败。如果可能,最好显式选择所有列。