从另一个表中的每个ID的表中选择前1

Rae*_*dur 6 sql t-sql sql-server

表结构是:

create table fruit (
  id int identity(1,1),
  name varchar(max)
)

create table fruit_allocation (
  id int identity(1,1),
  fruit_id int references fruit(id),
  customer_id int references store(id),
  amount float,
)

create table measurement (
  fruit_allocation_id int references fruit_allocation(id),
  measurement_date datetime,
  measurement float,
)
Run Code Online (Sandbox Code Playgroud)

每个水果都可以分配给多个客户,创建一个fruit_allocation记录.每个fruit_allocation记录可以有多个度量.

我想为每个fruit_allocation选择最新的度量给出一个水果ID

到目前为止,我有以下内容:

select * 
  from measurement 
 where fruit_allocation_id in (select id 
                                 from fruit_allocation 
                                where fruit_id = 10)
Run Code Online (Sandbox Code Playgroud)

这将返回该水果的所有测量值,我想每个fruit_allocation返回1个测量值.

Ric*_*iwi 9

你可以交叉申请

select a.*, m.*
from fruit_allocation a
cross apply (
    select top 1 *
    from measurement m
    where m.fruit_allocation_id = a.id
    order by m.measurement_date desc
) m
where a.fruit_id = 10
Run Code Online (Sandbox Code Playgroud)