質問: よろしくお願いいたします。 表題の件ですが、現在Accessを使用してクエリなどを作成する際に、 「**DISTINCTROW**」が良く出てきます。 これまで知らなかった句だったので、何度も調べたのですがいまひとつ**DISTINCTとの違いが把握できません。** 色々と検索してなんとなく浮かび上がってきたのは、 **・DISTINCTがカラムに対して使われるのに対し、 ・DISTINCTROWはレコードに対して使われる。** ??? レコード、つまり行で重複があれば排除するということでしょうか?? 行での重複を排除するとデータ内容がおかしなことになりそうな...?? などと理解ができず迷走しています。 **ネットに書いてある内容は、抽象的もしくは難しすぎてはっきりと理解が出来ないので、** こちらで有職者の皆様からの意見・捉え方をわかりやすくご教示いただきたく質問させていただきました。 どうぞよろしくお願いいたします。
回答: 独学なので正解な説明かは自信がないですが、自分はこんなイメージです。 ・DISTINCT: 指定した全カラムの値が一致する場合は重複させない ・DISTINCTROW: データソースが同じレコードの組み合わせとなる場合は重複させない わかりやすく例をあげると、 MST_A ID,NAME 01,AAA 02,BBB 03,CCC DAT_1] DATE,ID,VAL 1/1,01,100 1/1,02,200 1/1,03,300 1/2,01,150 1/2,03,350 1/3,01,150 DAT_2 ID,VAL 1,1 2,2 のような3テーブルを用意し、 ``` SELECT M.ID, M.NAME, D1.VAL FROM DAT_2 as D2, DAT_1 as D1 INNER JOIN MST_1 M ON D1.ID = M.ID; ``` のようなSQLを実行します。 そのまま実行すると、DAT_1のDAT_1の件数の2倍の件数が表示されると思います。 このSQLをSELECT DISTINCT ~に変更すると、結果が同じになる行は1行しか表示されなくなると思います。 (DAT_1の1/2,01,150と1/3,01,150は1行になる) このSQLをSELECT DISTINCTROW ~に変更すると、DAT_1の件数の2倍の件数にならず、DAT_1と同じ件数の結果が得られると思います。 ※認識誤りなどあればご指摘いただけると幸いです。