请在 SQL 查询方面寻求一些帮助。我有一个类似于下面的表格:
id | uprn | driverlicence |
===============================================
1 | 100000000420 | FARME100165AB5EW |
2 | 100000011420 | FARME100165AB5EW |
3 | 100000022420 | GARME100165AB5EW |
4 | 100000033420 | HARME100165AB5EW |
本质上我想要做的是获取所有 uprn 不同的行,但驱动程序是相同的。所以在上面的例子中,我只会取回前 2 行,因为驱动程序会匹配,但 uprn 不会。
我没有可以分享的现有查询,因为我不知道如何解决这个问题,而且我还没有从网络搜索中找到任何有用的信息。
答案 0 :(得分:0)
我的 SQL 知识有点生疏,但这应该可以:
SELECT a.id, a.uprn, a.driverlicence
FROM mytable a
JOIN mytable b BY a.driverlicence == b.driverlicence
WHERE a.uprn != b.uprn
或者替代
SELECT *
FROM mytable
WHERE EXISTS(
SELECT *
FROM mytable other
WHERE uprn != other.uprn AND driverlicence == other.driverlicence)
答案 1 :(得分:0)
我认为这是一个 X-Y 问题。你可以试试这个 sql。如果你有其他需要,请给我评论。
select uprn,driverlicence from t1 where driverlicence in
(
-- select duplicate driverlicence
select driverlicence from t1 where uprn in
-- remove duplicate uprn
(select uprn from t1 group by uprn having count(*)<2)
group by driverlicence having count(*)>1
)
uprn | driverlicence
--------------+------------------
100000000420 | FARME100165AB5EW
100000011420 | FARME100165AB5EW