Uma maneira de contornar essa limitação seria < strong> UNION ALL
.
No entanto, o tipo de linha de todos os SELECTs
tem que ter que corresponder . Então eu adicionei NULL
para a coluna faltante c
na segunda consulta. Pode ser qualquer valor que se ajuste ao tipo de dados:
SELECT 1 AS a, 4 AS b, 5 AS c FROM tbl_a
UNION ALL
SELECT 1 , 3 , NULL FROM tbl_b; -- aliases only needed in 1st SELECT
Retorna um conjunto de resultados único .
Para indicar a origem de cada linha, você pode adicionar uma coluna ou slide em sequência entre SELECTs individuais. Demonstrando ambos de uma vez com expressões VALUES:
SELECT * FROM (
VALUES
(1, 1, 14, 15)
,(1, 2, 17, 11)
) AS t(query, a, b, c)
UNION ALL VALUES (NULL::int, NULL::int, NULL::int, NULL::int) -- delimiter
UNION ALL (
VALUES
(2, 3, 24, NULL::int)
,(2, 4, 27, NULL::int)
);
Castings de tipo explícito podem ser necessários. Eu só adicionei o que é absolutamente necessário aqui. - > Demonstração SQLfiddle .