を続ける私は選択クエリを必要とする。..は、現在の行に重複した行と更新次の行を削除し、
環境:SQL DBA -SQL Server 2005またはそれ以降
例:このサンプルテーブルで
、もし私はトップ20を選択します。重複レコードは来なくて、次のレコードは20レコードになります。
例: は20のレコードに繰り返してはならないと18が重複している場合は、18の代わりに、第19回レコードは来るべきと19 20日に来るべき20 --- 21日に、来る必要があります。
AscまたはDescの行に対する懸念はありません。
ルックアップテーブル
Id Name
123456 hello
123456 hello
123654 hi
123655 yes
ルックアップテーブル
Id Name
123456 hello
123654 hi
123655 yes
後の私のテーブルの前に:
CREATE TABLE [dbo].[test](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ContestId] [int] NOT NULL,
[PrizeId] [int] NOT NULL,
[ContestParticipantId] [int] NOT NULL,
[SubsidiaryAnswer] [varchar](256) NOT NULL,
[SubsidiaryDifference] [bigint] NOT NULL,
[AttemptTime] [datetime] NOT NULL,
[ParticipantName] [varchar](250) NOT NULL,
[IsSubscribed] [bit] NOT NULL,
[IsNewlyRegistered] [bit] NOT NULL,
[IsWinner] [bit] NOT NULL,
[IsWinnerConfirmed] [bit] NOT NULL,
[IsWinnerExcluded] [bit] NOT NULL) ON [PRIMARY]
私の質問は次のとおりです。この選択から、私たちは実際には最初の20が必要ですが、ユニークなもの。
SELECT TOP 20 * FROM test order by SubsidiaryDifference
上記のクエリを実行すると、現在ではいくつかの倍の値が設定されています。ダブルがある場合は、1回だけ取って次のものを取る必要があります
誰でもこの問題を知っていますか?事前に
感謝:)あなたの質問を読ん
**ユニーク**何の基準で?どの列が一意でなければならないのですか? –
@marc_s contestparticipantidは一意でなければならず、結果は副相違によって注文する必要があります – Rizvan
私の応答が更新されました。 –