sql >> データベース >  >> RDS >> Sqlserver

各外部キーの最小日付でレコードのレコード ID を取得するにはどうすればよいですか?

    それを行う方法の 1 つは、

    select A.ForeignKeyID, R.recordID
    from (select distinct t.ForeignKeyID from table as t) as A
        outer apply
        (
            select top 1 t.recordID
            from table as t where t.ForeignKeyID = A.ForeignKeyID
            order by t.createdDate asc
        ) as R
    

    SQL FIDDLE の例

    それを行う別の方法は

    select top 1 with ties
        t.recordID, t.ForeignKeyID
    from table as t
    order by row_number() over (partition by t.ForeignKeyID order by t.createdDate)
    

    SQL FIDDLE の例

    そして別の方法

    select A.recordID, A.ForeignKeyID
    from
    (
        select
            t.recordID, t.ForeignKeyID,
            row_number() over (partition by t.ForeignKeyID order by t.createdDate) as RowNum
        from table1 as t
    ) as A
    where A.RowNum = 1
    

    SQL FIDDLE の例

    コードが短いので、2 番目の方が好きです



    1. ALTERステートメントを使用してSQLServerでテーブルを変更する方法-SQLServer/T-SQLチュートリアルパート35

    2. CXPACKET待機の詳細:歪んだ並列処理

    3. MySQLでテーブルの照合を表示する方法

    4. 接続が失われた/切断されたトランザクションでのMySQLロールバック