誰かがこれに遭遇する可能性があり、それが助けになるかもしれないので、これは私自身の質問に答える私の最初の試みです。 Firebirdを使用して、UNION ALLを使用して2つのクエリの結果を結合し、結果の出力を特定の列に並べ替えたいと思います。何かのようなもの:
(select C1, C2, C3 from T1)
union all
(select C1, C2, C3 from T2)
order by C3
括弧は他のデータベースの有効な構文からのものであり、UNION ALL(テーブルで機能するように定義されている操作-つまり、 注文なし レコードのセット)を個別に注文しようとしないでください。ただし、この構文をFirebirdで機能させることができませんでした。どうすればよいでしょうか。
SELECT C1, C2, C3
FROM (
select C1, C2, C3 from T1
union all
select C1, C2, C3 from T2
)
order by C3
フィールド名は同じである必要はありません。そのため、フィールド名をbyの順序で使用することはできません。
代わりにフィールドインデックスを使用できます。のように:
(select C1, C2, C3 from T1)
union all
(select C7, C8, C9 from T2)
order by 3
どうですか:
select C1, C2, C3 from T1
union all
select C1, C2, C3 from T2
order by 2
少なくとも新しいFirebirdバージョンでは、エイリアスを使用する代わりに「番号」で注文すると機能します。
Firebird 1.5では、これは私のために機能します
create view V1 (C1, C2, C3) as
select C1, C2, C3 from T1
union all
select C1, C2, C3 from T2
その後
select C1, C2, C3 from V1 order by C3
ビュー(ORDER BY句なし)でUNION ALLを実行してから、ORDERBYを使用してビューから選択します。
引っ越しorder by
クエリテールにnoデータグリッドを出力する効果があります。
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
)