2

「flt」という名前の次のテーブルがあります

重複が 3 列だけで識別されていることがわかります(flight, fltno, stad)... の内容は気にしませんcol1 and col2.。しかし、クエリでそれを表示できるはずです。

だから..重複ids 8, 3 and 10していることがわかります。

純粋なSQLクエリを書きたい...次のことができます:

1)列.. 基本的に、現在選択されている行にduplicate count一致するレコードの数をカウントします。flight, fltno, stad

2)"duplicate rank"重複を並べ替える列。1 は最初のレコードを意味し、2 はこれが 2 番目のレコードであることを意味し、3 はこれが 3 番目のレコードであることを意味します。ba 104合計で 2 つのレコードがあり、1 位と 2 位にランクされていることがわかります。

3)結果の(おそらく編集可能な)クエリから..すべての重複ランクを(whereを使用して)除外できるはずです> 1...それらのレコードを削除できます。だから.. id 8, 3 and 10 are > 1..そして、このクエリでそれらを削除できるはずです...行をクリックしてキーを削除します。

条件 3 が完全に達成できない場合は、可能な限り最善の方法を教えてください。ありがとう。

ここに画像の説明を入力

4

3 に答える 3

1

この SQL は質問どおりの結果を取得しますが、DELETE クエリの一部としては機能しません。このクエリから一時テーブルに SELECTING し、そこから DELETE クエリを実行することをお勧めします:)

SELECT A.id, A.flight, A.fltno, A.stad, A.col1, A.col2, B.concount AS [duplicate count], (SELECT Count(C.id) FROM tblfit As C WHERE C.flight&C.fltno&C.stad=A.concat AND C.id <= A.id) AS [duplicate rank]
FROM (SELECT tblfit.*, [flight] & [fltno] & [stad] AS concat
FROM tblfit) AS A,
(SELECT [flight] & [fltno] & [stad] AS concat, Count([concat]) AS concount
FROM tblfit
GROUP BY [flight] & [fltno] & [stad]) AS B
WHERE A.concat = B.concat;
于 2013-06-14T14:40:30.023 に答える
0

値が常に 1 である表に列を追加しました。

countValue

次に、重複カウントの最初のクエリは次のとおりです

SELECT tableA.flight, tableA.fltno, tableA.stad, Sum(tableA.countValue) AS duplicateCount
FROM tableA
GROUP BY tableA.flight, tableA.fltno, tableA.stad;

次に、重複ランク (ID 番号でランク付け) の 2 番目のクエリは次のとおりです。

SELECT (SELECT Count(*)+1 FROM tableA WHERE id < temp.id AND stad = temp.stad AND flight = temp.flight AND fltno = temp.fltno) AS flightRank, temp.id, temp.flight, temp.fltno, temp.stad
FROM tableA AS temp;

その後、それらに参加できます

SELECT tableA.id, tableA.flight, tableA.fltno, tableA.stad, tableA.col1, tableA.col2, queryCounts.duplicateCount, queryRanking.flightRank
FROM (tableA INNER JOIN queryRanking ON tableA.id = queryRanking.id) INNER JOIN queryCounts ON (tableA.stad = queryCounts.stad) AND (tableA.fltno = queryCounts.fltno) AND (tableA.flight = queryCounts.flight);

次に、削除クエリについては、結合を使用して削除する必要があるため、このスレッドを読んでください

JOIN を使用しているときに MS Access で削除するには?

于 2013-06-14T13:28:19.277 に答える
0

これで質問 1 が解決します。3 つの質問すべてに同じ質問で答えられるとは思いません。

Select Flight, FltNo, Stad, Sum(1) as DupCnt
from FLT
Group By Flight, FltNo, Stad
order by Sum(1) DESC

4 と 10 ではなく、8 と 3 を削除する必要があることをどのように判断しますか?

于 2013-06-14T13:30:16.787 に答える