2011-10-04 11 views
2

私はほぼ同じ名前のテーブルを4〜5つ持っているので、同じ名前のカラムを選択する必要があります。これまでのところ、私はこれをやっている:あなたが同様のテーブルの一握り以上のものを持っていたし、任意の代替構文があるかどう思っていたならば、それは過度に冗長かもしれないよう複数のテーブルから同じ列を選択するUNIONの代替方法はありますか?

SELECT colA, colB FROM Table1 
    UNION 
    SELECT colA, colB FROM Table2 
    UNION 
    etc... 

に思えます。理想的には私はUNIONへの代替がない場合

SELECT colA, colB FROM Table% 

のように、何かのワイルドカード-yのが好きで、なぜだろうか?これを許さない特定の理由はありますか?テーブルの定義(テーブル+ colの名前、タイプなど)については、SQL操作をできるだけ具体的にする必要がありますが、データ操作の柔軟性を考慮する必要があります(したがって、行にはワイルドカードを使用しています)。

答えて

2

私が考えることのできる代替方法はありません。私が卑劣であった場合、同様のデータを含む類似のテーブルがある場合、データベース設計を再考する必要があります。

+0

私は同じ考えを持っていたが、それは_my_デザインではありません:)彼らは毎日入ってくる大量のデータを持っているローカライズされたテーブル(例えば、TableUK、TableUSA、TableJapan)しているので、彼ら分割された。明らかに、これにより、1つの大規模なテーブルと比較して、プロセス全体が速くなります。私は彼らがすぐにもうテーブルを追加しないことを願っています! – Alex

+0

@Alex:1つのパーティションテーブルにする必要がありますか? – gbn

+0

追加の列「国」を含むビューを作成することもできます。しかし、その後、 'UNION'は視点のコードに入ります... –

1

データベースプロバイダによって開発されたUNIONクエリの代替はありません。

0

テーブルエイリアスを使用できます。例えば :

select a.colA, b.colA, a.colB, b.colB 
from table1 a 
+0

各テーブルの各行を結果セット内の単一の行にしたくない場合は、これが機能します。列を作成しています。その場合には –

+0

SQL Serverには「転置」と呼ばれるものがあり、行を列に変換します。 – mrRuben

関連する問題