Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để lấy ID bản ghi của bản ghi với ngày tối thiểu cho mỗi khóa ngoại?

Một trong những cách để làm điều đó là

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

VÍ DỤ FIDDLE SQL

Một cách khác để làm điều đó là

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)

VÍ DỤ FIDDLE SQL

Và một cách khác

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

VÍ DỤ FIDDLE SQL

Tôi thích cái thứ hai hơn những cái khác vì độ ngắn của mã



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. System.AccessViolationException trong .NET 4.0 khi kết nối với Cơ sở dữ liệu SQL

  2. Lợi ích của việc sử dụng ký hiệu vị trí thứ tự trong SQL?

  3. Phân vùng máy chủ SQL trên mỗi bảng trên ID đối tượng thuê - dung lượng đĩa được sử dụng

  4. Làm thế nào để chuyển đổi Số nguyên 3/4 ký tự sang Định dạng thời gian 24 giờ và kết hợp với ngày tháng?

  5. Cách FOR XML PATH ('') hoạt động khi nối các hàng