2012-03-28 10 views
0

This question私が達成したいことはかなりですが、私のテーブルはより複雑で主キーはありません。私はまた、t1とt2が何を意味するのか、トップの答えをよく理解していません。この回答が私に当てはまる場合、誰かがコードを説明してくれれば幸いです。最初に重複したレコードを残して残りを削除してください

私は、クライアントに関する情報とそれらが保持するポリシーを含む数ヶ月のテーブルを持っています。すべてのクライアントには一意のポリシーIDがありますが、複数のポリシーを持つことができ、同じポリシーIDで複数のレコードが作成されます。重複したレコードは、すべてのフィールドで完全に異なっていても全く同じであってもかまいません。

私の目的のために、各ポリシーIDごとに1つのレコードしか保存しません。理想的には、保存された記録は年齢が最高のですが、複雑すぎる場合は必要ありません。その特定のポリシーIDの最大値である年齢を持つ複数のレコードが存在する可能性があることに注意してください。

プライマリキーを作成する予定はありません。同じポリシーIDで2つのレコードを保持する場合があるため、私はコードを自分で修正します。私は10 +テーブルで作業しているので、別のテーブルを作成したくない。誰かがfirst()を使って提案しましたが、私はそれをクエリに組み込む方法がわかりません。

追加情報が必要な場合はお知らせください。事前にお手数ですが、私の質問は少し非現実的だったよう

オーケー========= UPDATE#が、見えますので、私はオートナンバー、主キーを追加します。私はそれをどのように進めますか?これらのライン上の

+2

あなたは本当にそれはそんなに簡単に単一のレコードを識別しますし、あなたがDUPを削除する助けになるよう主キーを追加することを検討すべきです。プライマリキーがあることに注意しても、dupを持つことはできません。 –

+0

私はあなたが何かを与えなければならないと思う。新しいテーブルを作成する必要があるか、固有のキーを追加する必要があります。 – Fionnuala

答えて

3

何か:

DELETE Policies.* 
FROM Policies 
WHERE Policies.ID Not In (
    SELECT TOP 1 id 
    FROM policies p 
    WHERE p.policyid = policies.policyid 
    ORDER BY createdate DESC, id) 
+1

内部ブラケット 'SELECT'文を単独で実行しようとしましたが、' Policies.PolicyID'のパラメータ値を入力するように求めました。あなたのコードを正しく理解していることを確認できますか? ID = autonumber主キー。 Policies =テーブル。 P =ポリシーテーブル。 2番目の最後の行は常に真実ではないでしょうか?また、内側のブラケットは1つのレコードのみを出力します。 – Emily

+1

このアイデアでは、テキストに記述されているポリシーIDと重複するIDの2つのIDを使用します。IDは新しい自動番号です。内側の括弧は、ポリシーIDごとに1レコードを出力します。私はサンプルテーブルを使ってテストしました。 – Fionnuala

+1

ああ、私の謝罪、私はちょうどコードを理解しています。私は30kのレコードで私のテーブルの一つでテストを行った。それは動作するようです!だから、ありがとう! 1つの最後のことは、クエリが実行するためにかなりの時間がかかった - それは正常ですか?私のテーブルの1つに900kのレコードがあるので、私はちょっと心配しています。 – Emily

関連する問題