Die Kombination von UNION ALL und ORDER BY in Firebird

stimmen
13

Dies ist mein erster Versuch auf meine Frage zu beantworten, da jemand gut in diesen laufen kann und so könnte es hilfreich sein. Mit Firebird, ich die Ergebnisse von zwei Abfragen mit UNION ALL kombinieren möchten, dann sortieren Sie die resultierende Ausgabe auf einer bestimmten Spalte. Etwas wie:

(select C1, C2, C3 from T1)
union all 
(select C1, C2, C3 from T2)
order by C3

Die Klammern kam gültige Syntax für andere Datenbanken und sind erforderlich , um die Argumente für UNION ALL stellen Sie sicher (eine Operation , die definiert ist auf Tabellen zu arbeiten - also eine ungeordnete Menge von Datensätzen) versuchen , nicht einzeln bestellt werden. Allerdings konnte ich nicht diese Syntax erhalten in Firebird arbeiten - wie kann es getan werden?

Veröffentlicht am 09/12/2008 um 22:00
quelle vom benutzer
In anderen Sprachen...                            


6 antworten

stimmen
24

SELECT C1, C2, C3
FROM (
    select C1, C2, C3 from T1
    union all 
    select C1, C2, C3 from T2
)
order by C3
Beantwortet am 09/12/2008 um 22:08
quelle vom benutzer

stimmen
12

Feldnamen werden nicht gleich sein. Deshalb sollten Sie nicht die Feldnamen in der Reihenfolge verwenden können.
Sie können das Feld Index stattdessen verwenden. Wie in:

(select C1, C2, C3 from T1)
union all 
(select C7, C8, C9 from T2)
order by 3  
Beantwortet am 09/12/2008 um 23:18
quelle vom benutzer

stimmen
4

Wie wäre es mit:

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by 2

Zumindest in den neueren Firebird-Versionen funktioniert es, wenn Sie von „Nummer“ bestellen stattdessen einen Alias ​​zu verwenden.

Beantwortet am 23/06/2015 um 15:15
quelle vom benutzer

stimmen
2

In Firebird 1.5 funktioniert dies für mich

create view V1 (C1, C2, C3) as
  select C1, C2, C3 from T1
  union all 
  select C1, C2, C3 from T2

und dann

select C1, C2, C3 from V1 order by C3
Beantwortet am 03/02/2009 um 15:48
quelle vom benutzer

stimmen
1

Führen Sie die UNION ALL in einer Ansicht (ohne die ORDER BY-Klausel), dann wählen Sie aus der Sicht mit ORDER BY.

Beantwortet am 09/12/2008 um 22:02
quelle vom benutzer

stimmen
0

Umzug order byin eine Abfrage Schwanz hat keine Auswirkung auf Ausgang Datagrid.

select * from (
    select first 1
        C1
    from T1
    order by id desc
)
union all
select * from (
    select first 1
        C1
    from T2
    order by id desc
)
Beantwortet am 17/04/2017 um 21:59
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more