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

left join two tables on a non-unique column in right table

我在 sql 服务器中有两个 table,我想 select 加入来自这些 table.the 的一些数据,首先 table 有一些客户喜欢:

---------------
customer   id   
Dave       1    
Tom        2     
---------------

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

------------------
product    date       customer id
PC         1-1-2000   1
phone      2-3-2000   2
laptop     3-1-2000   1
------------------

我想要 select 首先 table (客户信息)他们购买的最后日期! 我试过 left join 但这并没有给我最后一次购买,因为客户 ID 在第二个 table 中不是唯一的!我如何使用 SQL 服务器查询来执行此功能?此致

使用 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
       )

我认为你可以使用 inner join 和 group by

select table1.customer, table1.id, table.max(date) 
from  table1 
inner join table2 on table1.id = table2.id 
group by table1.customer, table1.id

如果您只想要最大日期,请使用聚合。我会向没有购买过的客户推荐 left join

select c.customer, c.id, max(p.date)
from customers c left join
     purchases p
     on c.id = p.customer_id
group by c.customer, c.id;