sql >> Databáze >  >> RDS >> Sqlserver

Jak získám ID záznamu záznamu s minimálním datem pro každý cizí klíč?

Jedním ze způsobů, jak to udělat, je

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

PŘÍKLAD SQL FIDDLE

Další způsob, jak to udělat, je

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)

PŘÍKLAD SQL FIDDLE

A další způsob

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

PŘÍKLAD SQL FIDDLE

Druhý se mi líbí víc než ostatní kvůli krátkosti kódu



  1. Je možné použít více/vnořených příkazů MySQLi?

  2. Jak používat MySql na Macu

  3. Jsou vnořené závorky v klauzuli FROM platnou syntaxí Oracle SQL?

  4. Jak se připojit k MySQL běžící na Dockeru z hostitelského počítače