SELECT DISTINCTとWHEREによるテーブル結合の方法
- テーブルAから、右2文字の重複しないテーブルBをつくり、さらにさらにテーブルBとも重複しない左2文字のテーブルCをつくりたい。
- INSERT INTO テーブルB (F1) SELECT DISTINCT Left([F00],2) AS F1 FROM テーブルA でテーブルAの右2文字の重複しないテーブルBを作成します。
- INSERT INTO テーブルC (F1) SELECT DISTINCT Right([F00],2) AS F1 FROM テーブルA,テーブルB WHERE テーブルB.F1<>Right(テーブルA.F00,2) でテーブルBとも重複しない左2文字のテーブルCを作成します。
- ベストアンサー
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
- situmonnsya
- お礼率70% (374/532)
- その他(データベース)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
INSERT INTO テーブルC (F1) SELECT DISTINCT Right([F00],2) AS F1 FROM テーブルA LEFT JOIN テーブルB ON テーブルB.F1 = Right(テーブルA.F00,2) WHERE テーブルB.F1 Is Null; あるいは、 INSERT INTO テーブルC ( F1 ) SELECT DISTINCT Right([F00],2) AS F1 FROM テーブルA WHERE Right([F00],2) Not In (SELECT F1 FROM テーブルB); ということかな?
関連するQ&A
- SELECT DISTINCT の使いかた
テーブル名にA1,A2,A3と言う列がありA1内の列の重複を省き 結果をA1,A2,A3全て表示したいのですが方法がわかりません。 どなたかHELP お願いします。 SELECT DISTINCT A1 FROM テーブル
- ベストアンサー
- その他(データベース)
- 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について
SQL文の質問です。フィールドがTable1に100つあるとします。 select distinct XYZ From Table1という文があるとします。 これだとXYZのフィールドしか参照していないことになると思います。 そうではなくて、他の99フィールドの値も参照(データにアクセスしたい)したいと思っています。 select distinct XYZ, * From Table1とSelect * from Table1みたいなことをやりましたがエラーが発生しました。他の99フィールドを参照する方法はあるでしょうか?
- ベストアンサー
- その他(データベース)
- WHERE句に複数テーブルを使いたい
アクセス2010です。 テーブルA F1__テキスト(重複あり) F2__数字 テーブルB F1__テキスト(重複なし) F2__Boolean 条件 ・テーブルAのF2が1の条件で ・テーブルAのF1にテーブルBのF2がない ・テーブルBのF2がTrueであるものだけ DoCmd.RunSQL INSERT INTO テーブルA(F1,F2) SELECT テーブルB.F1,100 FROM テーブルB WHERE テーブルA.F2 = 1 And テーブルA.F1<>テーブルB.F1 And テーブルB.F2 = True; WHERE句に複数テーブルを使いたい時は、どのようにするのでしょうか?
- ベストアンサー
- その他(データベース)
- SELECT DISTINCTの結果件数をCOUNTする方法
SQL SERVER 2005 EXPRESS のストアドプロシージャで、 SELECT結果の件数を、変数 @count に取得したいのですが DISTINCTの引数が複数あるのが原因なのか、上手くいきません。 目的はテーブル「TBL」から、COMとUSERの組み合わせの リストを抽出し、その件数を取得する事です。 テーブル名:TBL COM USER --------------- 001 A 002 A 003 A 001 B 002 A 003 C 「COMとUSERの組み合わせで、重複するものは取らない」のならば SELECT DISTINCT COM,USER FROM TBL で、下記のような結果が得られます。 COM USER --------------- 001 A 002 A 003 A 001 B 003 C で、この結果件数である「5」を取りたいのですが DECLARE @count int SELECT @count = COUNT(DISTINCT COM,USER) FROM TBL print @count と打っても失敗します。 ( )の括りやCOUNTの位置をいろいろと試したが出来ませんでした。 COUNT DISTINCT(複数項目)が出来ないのならば、 どうすればこの結果の件数を取得できるでしょうか? どうかご教授授くださいませ。よろしくお願いします。
- ベストアンサー
- SQL Server
- 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(+)
- ベストアンサー
- Oracle
- Insert Into Select での重複について
DB:SQLServer2000 こんにちは お世話になっております。 トランザクションのテーブルA から ワークのテーブルBへInsert Into Select を使用してデータを格納しているのですが、その際に重複が発生してしまいます。 テーブルA 主キーあり テーブルB 主キーなし Delete B Insert into B select 項目1,項目2,・・・ from A With(Nolock) where 日付項目 = 20080101 テーブルAの主キー項目は全てテーブルBへInsertしており、Insert完了後のテーブルBの中身を見ると、まれに全く同じデータが2件出来ていることがあります。 このInsert into selectが実行されている間に、テーブルAに対して登録更新が行われることもあります。 色々と試してはいるのですが、原因が特定できずに困っております。 もし何かお気づきになられる方がいらっしゃいましたら、ご教示下さい。 よろしくお願い致します。
- 締切済み
- SQL Server
- accessでDISTINCT 句と矛盾
IIFで置き換えをした結果をソートしようとしましたが、 SELECT DISTINCT a,IIF(IsNull(b), 0, 1) AS c FROM shain ORDER BY a,c [Microsoft][ODBC Microsoft Access Driver] ORDER BY 句 (c) が DISTINCT 句と矛盾しています。 というエラーになりました。 正しいSQLを教えてください。 SELECT DISTINCT a,IIF(IsNull(b), 0, 1) AS c FROM shain ORDER BY a,b も試しましたが同じようにエラーになりました。
- ベストアンサー
- その他(データベース)
- SQLのこと:distinctして並び替えたい
select * from (select distinct on (aaa) * from bbb) as ccc order by ddd テーブルbbbのaaaというフィールドが重複せず、しかも他のフィールドで並び替えをしたかったら、このような書き方以外ありますか?データベースはPostgreSQLです。 この書き方で不都合が出ているというわけではありませんが、どう書けば、パフォーマンス的にも良いSQLになるか、詳しい方がいらっしゃいましたら、お願いします。
- ベストアンサー
- PostgreSQL
- SQL文「DISTINCT」の「ORDER BY」について
SQL文「DISTINCT」の「ORDER BY」について教えて下さい。 A列をDISTINCTで重複行の排除をしています。 その後、B列でORDER BYをかけたいのですが、エラーが 出てしまいます。A列でのORDER BYは成功します。 何か良い方法があれば教えて下さい。 よろしくお願いします。 SQL="SELECT DISTINCT A列 from table " &_ "WHERE (table.C列='100') " &_ "ORDER BY (table.B列) ASC " ⇒エラー "ORDER BY (table.A列) ASC " ⇒成功
- ベストアンサー
- SQL Server
お礼
>WHERE Right([F00],2) Not In (SELECT F1 FROM テーブルB); のほうが私には理解しやすかったです。 希望の結果をだせました。ありがとうございます。