0

私は2つのテーブルを持っています。1 つのテーブルには 3 つの行があり、別のテーブルには 5 つの行があります。この両方のテーブルを結合したかったので、結果にはそれぞれ 3 行と 5 行が表示されます。SQLステートメントを使用してそれを達成できる方法はありますか? どんな助けでも大歓迎です。

4

1 に答える 1

2

UNIONこれに使用できます。

SELECT colA, colB, colC, 1 as OrderThis
FROM tableA
UNION ALL
SELECT colA, colB, colC, 2 as OrderThis
FROM tableB
ORDER BY OrderThis ASC

使用の基本的なルールは 2 つあります。UNION

  • 列の数は両方のクエリで同じでなければなりません
  • データ型は互換性がなければなりません

UNIONオプションのパラメータがありますALLALLパラメータを省略すると、UNION結合されたすべての一意のレコードが明確に表示されます。

ご覧のとおり、仮想列 OrderThisを追加しました。これは、行の順序付けの基礎になります。しかし問題は、結果リストに表示されることです。解決策は、サブクエリでラップすることです。

SELECT colA, colB, colC
FROM
(
    SELECT colA, colB, colC, 1 as OrderThis
    FROM tableA
    UNION ALL
    SELECT colA, colB, colC, 2 as OrderThis
    FROM tableB
) a
ORDER BY OrderThis ASC
于 2012-09-14T03:17:42.540 に答える