Eine Möglichkeit, diese Einschränkung zu umgehen, wäre UNION ALL
.
Allerdings ist der Zeilentyp aller SELECTs
hat muss übereinstimmen . Also habe ich in der zweiten Abfrage NULL
die fehlende Spalte hinzugefügt c
. Könnte ein beliebiger Wert sein, der zum Datentyp passt:
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
Gibt eine einzelne Ergebnismenge zurück.
Um die Quelle jeder Zeile anzugeben, können Sie zwischen einzelnen SELECTs eine Spalte oder eine Folie einfügen. Beide gleichzeitig mit VALUES-Ausdrücken demonstrieren:
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) );
Explizite Typumwandlungen können erforderlich sein. Ich habe nur das absolut Notwendige hinzugefügt. -> SQLFiddle- Demo.