sql - 选择基于另一个行值匹配的行
问题描述
请在 SQL 查询方面寻求一点帮助。我有一个类似于下面的表格:
id | uprn | driverlicence |
===============================================
1 | 100000000420 | FARME100165AB5EW |
2 | 100000011420 | FARME100165AB5EW |
3 | 100000022420 | GARME100165AB5EW |
4 | 100000033420 | HARME100165AB5EW |
基本上我想要做的是获取所有uprn不同的行,但驱动程序是相同的。所以在上面的例子中,我只会取回前 2 行,因为驾驶执照会匹配,但 uprn 不会。
我没有可以分享的现有查询,因为我不知道该怎么做,而且我还没有打算从网络搜索中找到任何有用的东西。
解决方案
我的 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)
推荐阅读
- dc.js - dc.js - 前几年的年平均值 + 本年的每月平均值
- oracle - Oracle ASM数据库创建后在linux中没有启动
- sql - 子查询输出
- android - 如何在我的智能手机上升级我的 ADB 版本?
- git - 在 Jenkins 流水线阶段隐式加载子模块
- javascript - JQuery:替代each()对选定的复选框值进行条件检查
- c# - ASP.NET Core 识别 Auth + Angular:登录不起作用
- json - 如何使用 jqwidgets 和 angular 生成特定的 json?
- docker - 为springboot项目运行docker镜像时出错
- javascript - MongoError:如何解决:管道需要文本分数元数据,但没有可用的文本分数?