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
節は final にのみ適用され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'
ところで、テーブル スキーマの 1 つが変更された場合、クエリが失敗するため、おそらく選択で使用*
したくないでしょう。UNION
可能であれば、すべての列を明示的に選択することをお勧めします。