das Ergebnis der SQL-Platz 1:warum diese SQL verwendet Vereinigung zurück alle keine Daten
select p1.t1, p2.t2, p2.t3 from
(select 'A' as t1,'' as t2,'' as t3 from dual) p1 left join
(select '' as t1, '' as t2, '' as t3 from dual where 1=2) p2 on p1.t1 = p2.t1
ist
A NULL NULL
das Ergebnis der SQL 2.:
select p1.t1, p2.t2, p2.t3 from
(select 'B' as t1,'' as t2,'' as t3 from dual) p1 left join
(select '' as t1, '' as t2, '' as t3 from dual where 1=2) p2 on p1.t1 = p2.t1
ist
B NULL NULL
wenn ich union all diese beiden Teil von SQL, meine erwartet SQL sind:
A NULL NULL
B NULL NULL
aber ich kein Ergebnis.
die SQL ist wie unten:
select p1.t1, p2.t2, p2.t3 from
(select 'A' as t1,'' as t2,'' as t3 from dual) p1 left join
(select '' as t1, '' as t2, '' as t3 from dual where 1=2) p2 on p1.t1 = p2.t1
union all
select p1.t1, p2.t2, p2.t3 from
(select 'B' as t1,'' as t2,'' as t3 from dual) p1 left join
(select '' as t1, '' as t2, '' as t3 from dual where 1=2) p2 on p1.t1 = p2.t1
ich diese SQL auf Oracle getestet. Ich möchte wissen, warum das Ergebnis nicht wie erwartet ist. übrigens, wenn Union statt Union alle verwenden, ist das Ergebnis wie erwartet.
Dies ist sehr seltsames Verhalten und bestätigt auf SQL Fiddle, zumindest http://www.sqlfiddle.com/#!4/d41d8/27926. –
Ich sehe keinen Grund dafür. Es funktioniert auf meinem dbms (Ora 10g). Welche Version verwendest du? –
Ich bekomme das korrekte Ergebnis in Oracle 11g Release 11.2.0.3.0 – aglassman