在右表的非唯一列上左连接两个表

ima*_*man 5 sql sql-server join left-join sql-query-store

我在 sql server 中有两个表,我想从这些表中选择并加入一些数据。第一个表有一些客户,例如:

---------------
customer   id   
Dave       1    
Tom        2     
---------------
Run Code Online (Sandbox Code Playgroud)

和第二个表 i 购买表,其中包括最后一次购买的清单和成本以及哪个客户购买了该产品:

------------------
product    date       customer id
PC         1-1-2000   1
phone      2-3-2000   2
laptop     3-1-2000   1
------------------
Run Code Online (Sandbox Code Playgroud)

我想选择最后购买日期的第一张桌子(客户信息)!我尝试过左连接,但这并没有给我最后一次购买,因为客户 ID 在第二个表中不是唯一的!我如何使用 SQL 服务器查询来执行此功能?问候

Ana*_*and 1

使用该not exists条款即可获胜!

select c.customer, p.*
from   Customer as c
inner  join Purchase as p
on     p.customer_id = c.id
where  not exists (
       select 1
       from Purchase as p2
       where p2.customer_id = p.customer_id
       and p2.date > p.date
       )
Run Code Online (Sandbox Code Playgroud)