首页 > 解决方案 > 选择基于另一个行值匹配的行

问题描述

请在 SQL 查询方面寻求一点帮助。我有一个类似于下面的表格:

id  |   uprn           |   driverlicence      |
===============================================
1   |   100000000420   |   FARME100165AB5EW   |
2   |   100000011420   |   FARME100165AB5EW   |
3   |   100000022420   |   GARME100165AB5EW   |
4   |   100000033420   |   HARME100165AB5EW   |

基本上我想要做的是获取所有uprn不同的行,但驱动程序是相同的。所以在上面的例子中,我只会取回前 2 行,因为驾驶执照会匹配,但 uprn 不会。

我没有可以分享的现有查询,因为我不知道该怎么做,而且我还没有打算从网络搜索中找到任何有用的东西。

标签: sqlrows

解决方案


我的 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)

推荐阅读