• ベストアンサー

二つのテーブルからDISTINCTする

お世話になっております。 二つのテーブルにそれぞれ「商品ID」というカラムがあるとします。 その「商品ID」をそれそれのテーブルをあわせたものからDISTINCTしたいのです。 ex) TABLE-A [1 , 5 , 8 , 6 , 3] TABLE-B [1 , 5 , 7 , 10 , 12 , 13] 結果[1 , 3 , 5 , 6 , 7 , 8 , 10 , 12 , 13] よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#4564
noname#4564
回答No.1

  SELECT [TABLE-A].商品ID FROM [TABLE-A] UNION SELECT [TABLE-B].商品ID FROM [TABLE-B] ORDER BY 商品ID  

関連するQ&A

  • distinct をexistsに変換する

    distinctをexistsに変換した方がパフォーマンスが良いようで、 例えば以下の例があるとします ---------------------------------- (前)SELECT DISTINCT a.ID1, a.NAME1 FROM TABLE1 a, TABLE2 b WHERE a.ID1 = b.ID2 (後)SELECT a.ID1, a.NAME1 FROM TABLE1 a    WHERE EXISTS ( SELECT 'X' FROM TABLE2 b WHERE a.ID1 = b.ID2) ---------------------------------- もっと複雑なSQLの場合、EXISTSに変換できるのでしょうか?。複雑なSQLとは、 「複数のテーブルからカラムを取得」「テーブル結合が2つ以上」「外部結合」 などのSQLで、以下に例を示します。 (例)SELECT DISTINCT a.ID1,a.NAME1,b.ID2,b.NAME2,c.ID3,c.NAME3    FROM TABLE1 a,TABLE2 b,TABLE3 c    WHERE a.ID1 = b.ID1(+)      AND a.ID1 = c.ID1(+)

  • テーブル結合

    度々お世話になっています。 Mysqlのテーブル結合したいと思ってます。 テーブル構成は以下のとおりですのでご参照ください。 ■テーブルA id | name 1 | bind 2 | samba 3 | apache ■テーブルB id | detail 3 | test 3 | test 1 | test ■結合結果 id | count 1 | 1 2 | 0 3 | 2 テーブルA,Bはidコラムで紐づいています。 この際、テーブルBのidごとにレコード数を出力したいのですが、 どういったSQLを流せば良いでしょうか。 ご教示願います。

    • ベストアンサー
    • MySQL
  • DISTINCT + COUNT

    みなさんこんにちは。 以下のようなSQL文のCOUNT関数を作りたいのですが、 うまい手法がわからず困っています。 SELECT DISTINCT Ta.会員ID, Tb.品番 FROM TABLE_A AS Ta LEFT JOIN TABLE_B AS Tb ON Ta.ID = Tb.ID ↑こいつのCOUNTですが、単純に SELECT COUNT(DISTINCT Ta.会員ID, Tb.品番) ~ とやるとエラーになってしまいます。 どうやってやればカウントできるのでしょうか? すごく初歩的なことだと思いますが、 ご助言お願いいたします。

  • DISTINCTの使い方を教えて下さい

    Select 文で DISTINCT を記述すると結果(Count)は-1となってしまいます。 DISTINCTを外すと全件表示されます。 これは何がまずいのでしょうか ? 環境 DB=SQLserver 2000 + IIS 5.0 + ASP 例:Select DISTINCT TABLE1,TABLE2,TABLE3 FROM TABLE ちなみにdbをAccess で使用している時とクエリアナライザではOKでした。

  • oracle9i distinct

    select distinct 1 as aaa, bbb from table_a aaa     bbb -------------------------- 1      a 1      b 1      c この場合の「distinct 1」というのは table_aの1列目でdistinctするという 意味でいいのでしょうか? でもdistinct 2 とすると、aaaの列の値が2になるだけなのですが・・。 すみませんがdistinct 1 の意味を教えていただけますでしょうか。

  • SELECT DISTINCT の使いかた

    テーブル名にA1,A2,A3と言う列がありA1内の列の重複を省き 結果をA1,A2,A3全て表示したいのですが方法がわかりません。 どなたかHELP お願いします。 SELECT DISTINCT A1 FROM テーブル

  • 複数のテーブルからデータを取得したい

    1つのテーブルから重複したデータを取り除いて表示するときに使う 【select distinct カラム名 from テーブル名;】 がありますよね。 それと同じようなことを複数のテーブルをまたいで行いたいのですがうまくいきません。 ちなみに両方のテーブルのカラム名は同じです。 【select distinct カラム名 from テーブル1 union select distinct カラム名 from テーブル2;】 としても重複を取り除いた後にテーブルを結合してるので結果的に両テーブルの重複した値を取り除くことができず。 そこで 【select distinct T1.カラム名, T2.カラム名 from テーブル1 T1. テーブル2 T2;】 としてみたのですが、クエリを実行中のまま反応がないので悩んでます。 ちなみに2つのテーブルのデータはそれぞれ2万件ほどです。 こういう時どういうsql文を組むのが正しいのでしょうか?

    • ベストアンサー
    • MySQL
  • SELECT/別テーブルのレコード数も取得したい

    ■環境 ・MySQL ■前提 ・テーブルA … idカラム ・テーブルB … A_idカラム ■やりたいこと ・テーブルAデータを取得する際、テーブルAレコードに応じて、テーブルB「A_idカラム」の数(レコード数)も取得したい ■取得イメージ例 ・テーブルA「全カラム」、「count」カラム ※「count」カラム … テーブルBにある「A_idカラム」の数 ■知りたいこと ・どこにも存在しないこの「count」カラムはどうやって作成したら良いでしょうか? ・全体のSQL文

    • ベストアンサー
    • MySQL
  • SELECT DISTINCTとWHERE

    アクセス2010 テーブルAから、右2文字の重複しないテーブルBをつくり、さらにさらにテーブルBとも重複しない左2文字のテーブルCをつくりたい。 テーブルA [F00] ABCD ABAB EFGH IJGH INSERT INTO テーブルB (F1) SELECT DISTINCT Left([F00],2) AS F1 FROM テーブルA  テーブルB [F1] AB EF IJ (うまくいきました) INSERT INTO テーブルC (F1) SELECT DISTINCT Right([F00],2) AS F1 FROM テーブルA,テーブルB WHERE テーブルB.F1<>Right(テーブルA.F00,2)  (うまくいきません) 下記のようにしたいのですが。 テーブルC [F1] CD GH

  • DISTINCTの使い方について

    ---------------------------------  元データ --------------------------------- ID CATEGORY CREATE_DATE 001 A100 2008/10/01 002 B100 2009/01/01 003 C100 2009/01/01 004 A100 2009/02/01 005 B100 2009/02/01 006 A100 2009/03/01 --------------------------------- ---------------------------------  出力したい形式 --------------------------------- ID CATEGORY CREATE_DATE 003 C100 2009/01/01 005 B100 2009/02/01 006 A100 2009/03/01 --------------------------------- 「CATEGORY」でユニークになるようにしたいと思っています。 重複しているものは、最新のデータ(CREATE_DATEが新しいもの)を 優先して取得したいと思っています。 ============================= SELECT DISTINCT(CATEGORY) CATEGORY, ID, CREATE_DATE FROM TABLE_NAME ORDER BY CREATE_DATE DESC ============================= というSQLを書いてみましたが、「CATEGORY」でユニークになって くれません。 また「CREATE_DATEが新しいもの」という点はORDER BY で行えば 良いのでしょうか? 以上、よろしくお願いいたします。