从 2 sql 个表中获取重复记录

Getting duplicate records from 2 sql tables

我有 2 SQL 个表

Table#1

account product expiry-date
101 prod1 2021-01-30
102 prod2 2021-02-20
103 prod3 2021-03-09
103 prod3 2021-03-19
104 prod4 2021-03-15
105 prod5 2021-04-23
105 prod5 2021-04-24
106 prod6 2021-04-25

Table#2

account
101
106

从上面的 2 个表中,我只想从 Table1 中获取不匹配的记录,并避免重复记录。

结果:

account product expiry-date
102 prod2 2021-02-20
103 prod3 2021-03-09
104 prod4 2021-03-15
105 prod5 2021-04-23

下面的查询我试过了,但我得到了重复的记录,因为有效期在帐户上是唯一的。我的输出低于记录

SQL 我试过的查询:

 select distinct (a.account, a.product, a.expiry-date) 
 from table1 a 
 where a.account not in (select account from table2)

结果:

account product expiry-date
102 prod2 2021-02-20
103 prod3 2021-03-09
103 prod3 2021-03-19
104 prod4 2021-03-15
105 prod5 2021-04-23
105 prod5 2021-04-24

您可以通过聚合使用相同的查询:

 SELECT a.account
  ,a.product
  ,MIN(a.expiry) expiry
 FROM table1 a
 WHERE a.account NOT IN (
    SELECT account
    FROM table2
    )
 GROUP BY a.account
   ,a.product

你可以使用反连接然后ROW_NUMBER()例如:

select *
from (
  select a.*, row_number() over(partition by accoun order by expiry) as rn
  from table1 a
  left join table2 b on b.account = a.account
  where b.account is null
) x
where rn = 1