次のようなデータのブロックがあります。
RW | PK A B C D
============================
1 | 1 aa 123 x 99
2 | 2 aa 234 v 98
3 | 3 bb 321 z 11
4 | 4 bb 210 w 91
5 | 5 cc 456 y 55
各セットの最初のアイテム (列 A で ID) だけを取得するにはどうすればよいですか?
RW | A B C D
=======================
1 | aa 123 x 99
2 | bb 321 z 11
3 | cc 456 y 55
私はGROUP BY
使用できますDISTINCT
が、それは私が見ているものでは非常に非効率的ですが、ストレートリストの実行には100ミリ秒もかかりません. 前述の 2 つのオプションは、関連する値が異なる可能性があるため、列 A のアイテムの複数のインスタンスを生成することもあります。
言い換えると、
SELECT MYTABLE.A, MYTABLE.D, MYTABLE.D, MYTABLE.D
FROM MYTABLE
非常に高速 (1 秒未満) ですが、
SELECT MYTABLE.A, MYTABLE.D, MYTABLE.D, MYTABLE.D
FROM MYTABLE
GROUP BY MYTABLE.A, MYTABLE.D, MYTABLE.D, MYTABLE.D
と
SELECT DISTINCT MYTABLE.A, MYTABLE.D, MYTABLE.D, MYTABLE.D
FROM MYTABLE
はるかに長い時間がかかります(数分ですが、完了させていません)。
集計関数 ( COUNT
、SUM
など) は必要ありません。アイテムごとに 1 回のリストだけです。列 A の値ごとの出現回数はさまざまであるため、すべてのx行を取得することはできません。
リストを実行して、Excel などを使用して並べ替えてみませんか? 数百万件のレコードが返されることを期待していますが、使い慣れたソフトウェアを使用してもそれほど多くのレコードを処理することはできません。