如何使用不同的?
避免列的重复?我想从表人不存在的表格关系中获取护照。它使用不存在。
,但我也想打印重叠(每次护照都没关系(。
这些是我的桌子:
关系
relID passport date
1 400000V 21/07/2019
2 400000V 31/02/2019
3 400000V 31/07/2011
4 342342X 31/12/2012
5 342342X 11/10/2011
6 823972O 31/07/2019
表人:
id passport
1 342342X
2 3333333T
3 1111111W
这是我想要的结果。
relID passport
1 400000V
6 823972O
那是我的查询:
select
distinct passport
from RELATION
where not exists(select 1 from PERSON where PERSON.passport= RELATION.passport)
如果我添加了与选择的列有关,则我从Passport获得了重复值。
我只想与他们的一份重新获得独特的护照。
只需使用聚合:
select max(relid), passport
from relation
group by passport;
我不明白person
表与问题有什么关系。
使用外部连接,检查加入表中的护照字段是否为null,这表明亲自存在的护照值:
SELECT r.PASSPORT, MIN(r.RELID)
FROM RELATION r
LEFT OUTER JOIN PERSON p
ON p.PASSPORT = r.PASSPORT
WHERE p.PASSPORT IS NULL
GROUP BY r.PASSPORT
ORDER BY r.PASSPORT
dbfiddle
使用min((
select min(relID),passport from table group by passport
按子句添加组应有所帮助: -
select min(relID), passport
from RELATION
where not exists(select 1 from PERSON where PERSON.passport= RELATION.passport)
group by passport;
您必须使用两次,对于表格和表格关系:
select r.relid, r.passport
from RELATION r
where
not exists (
select 1 from PERSON
where passport = r.passport
) and
not exists (
select 1 from RELATION
where passport = r.passport and "date" > r."date"
)
如果每张护照的日期是唯一的。
参见演示。
结果:
> RELID | PASSPORT
> ----: | :-------
> 1 | 400000V
> 6 | 823972O