0

なんらかの理由で、employee1とemployee2の2つの別々のテーブルに従業員がいるとします。

まるで積み重ねられているかのように、それらを足し合わせたいだけです。

何かのようなもの:

select all from employee1 and employee2 where name = bubba

私は一般化することを知っています、これは最終的にpostgresにあるので、そこに何か詳細があれば私は感謝を監視する必要があります

4

10 に答える 10

11
SELECT field1, field2, field2 FROM tableA WHERE field1='x'
UNION
SELECT field1, field2, field2 FROM tableB WHERE field1='x'

UNION ALL繰り返しでも、すべてのレコードが必要な場合に使用します。

于 2009-10-05T14:59:14.810 に答える
4

あなたはただ組合をしたいと思うでしょう

select * from Employee1 where name = 'bubba'
union
select * from Employee2 where name = 'bubba'
于 2009-10-05T14:58:43.407 に答える
3

UNIONキーワードを使用する必要があります

select * from employee1 where name = 'bubba'
union
select * from employee2 where name = 'bubba'
于 2009-10-05T14:58:29.990 に答える
2

ほとんどのデータベースでは、要求しているものはUNIONと呼ばれ、次のように記述されています。

select all from employee1 where name = bubba

UNION

select all from employee2 where name = bubba

これは、関係代数のプリミティブの1つである「和集合」演算子に由来します。

UNIONは設定された和集合に従うことに注意してください。つまり、E1テーブルとE2テーブルの間で重複する行については、行のコピーを1つだけ選択します。すべてのコピーを選択する場合は、「UNIONALL」演算子を使用してください。

于 2009-10-05T14:59:18.943 に答える
1

UNIONオペレーションを参照されていると思います。

于 2009-10-05T14:58:26.123 に答える
1

テーブルに同じスキーマがある場合は、

SELECT * FROM employee1 UNION SELECT * FROM employee2

両方のテーブルの列数は同じである必要があり、列は同様のタイプである必要があります。

于 2009-10-05T14:59:09.413 に答える
1

その組合だと思います

名前='bubba'である従業員1から*を選択します

連合

select * from employee2 where name ='bubba'

複製も必要な場合は、unionallを使用してください。

于 2009-10-05T14:59:34.117 に答える
1

あなたが欲しいのは「すべての組合」です:

select * from employee1
union all
select * from employee2;

列の種類と順序が一致している必要があります。一致していない場合は、選択リストに「*」ではなく列リストを指定する必要があります。「where」句は、「select」ステートメントのいずれかまたは両方に追加できます。

「all」がないと、2つのクエリ間で重複する行は1つの行に折りたたまれます。それが必要な場合は、「すべて」を削除してください。

于 2009-10-05T15:00:06.253 に答える
0

他の人が述べたように、あなたはUNION. ただし、本当に結果を積み上げたい場合は、 を使用する必要がありますUNION ALLUNION重複を削除し、それらを含めるUNION ALL。http://www.postgresql.org/docs/8.2/interactive/queries-union.htmlを参照してください

于 2009-10-05T15:08:47.657 に答える
0

価値があるのは、2 つのセット内の重複を取り除くためにソートする必要がないため、union all の方が実行が高速であることです。

于 2010-01-11T14:58:08.257 に答える