- ベストアンサー
複数のテーブルからデータを取得する方法
- 複数のテーブルからデータを取得する際に重複を取り除きたい場合、select distinct文を使用します。
- 両方のテーブルのカラム名が同じ場合、select distinct文を使ってテーブルを結合することができます。
- ただし、データの量が多い場合、クエリの実行に時間がかかる可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>【select distinct カラム名 from テーブル1 union select distinct カラム名 from テーブル2;】 >としても重複を取り除いた後にテーブルを結合してるので結果的に両テーブルの重複した値を取り除くことができず。 いや、できますね むしろunionするならdistinctもいらないです。 //データ作成 create table t1(data int); create table t2(data int); insert into t1 values(1),(2),(2),(3),(3),(4); insert into t2 values(1),(3),(3),(5); //表示 select data from t1 union select data from t2; //重複も表示するならunion all select data from t1 union all select data from t2;
その他の回答 (1)
- Picosoft
- ベストアンサー率70% (274/391)
実際に試してはいませんが、 select distinct * from ( select カラム名 from テーブル1 union select カラム名 from テーブル2 ) というのはどうでしょう? ちなみに、 select distinct T1.カラム名, T2.カラム名 from テーブル1 T1, テーブル2 T2 これをやらかすと、テーブル結合により2万件×2万件=4億件の中からの検索になりますので、 クエリ実行中のまま反応がなくなって当たり前です。
お礼
この文では思うように動きませんでした。 >テーブル結合により2万件×2万件=4億件の中からの検索になりますので、 4億件(^_^;) なるほどこんな事が起こっていたのですね 非常に勉強になりました。
お礼
何か勘違いしていたようで、教えていただいた通りunionでやってみるとうまくいきました。 ありがとうございます!