私は2つのテーブルを持っています。1 つのテーブルには 3 つの行があり、別のテーブルには 5 つの行があります。この両方のテーブルを結合したかったので、結果にはそれぞれ 3 行と 5 行が表示されます。SQLステートメントを使用してそれを達成できる方法はありますか? どんな助けでも大歓迎です。
質問する
51 次
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
オプションのパラメータがありますALL
。ALL
パラメータを省略すると、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 に答える