mysql - 如何在一个字段中查找在另一个字段中不重复的重复项
问题描述
我正在尝试从表中提取帐号和邮政编码,其中邮政编码是重复的,但帐号不是,(仅在存在邮政编码的情况下)
例如mailing
,使用以下字段调用的表:-
acc....custname.............postcode
B102...BILLYS SHOES.........LE54 2YZ
B104...BILLYS SHOES.........LE54 2YZ
D200...FANSY................RM5 6LW
D200...FANSY(2ND ACCOUNT)...RM5 6LW
T502...WELLIES R US.........
T502...WELLIES R US.........
...THE SHOE SHOP........DN54 05Y
X102...THE SHOE SHOP........DN54 05Y
因此,我尝试按计数 > 1 的邮政编码进行分组,效果很好,并显示
acc....custname.............postcode
B102...BILLYS SHOES.........LE54 2YZ
B104...BILLYS SHOES.........LE54 2YZ
D200...FANSY................RM5 6LW
D200...FANSY(2ND ACCOUNT)...RM5 6LW
...THE SHOE SHOP........DN54 05Y
X102...THE SHOE SHOP........DN54 05Y
但我需要能够只显示帐号也不重复的地方,即如下
acc....custname.............postcode
B102...BILLYS SHOES.........LE54 2YZ
B104...BILLYS SHOES.........LE54 2YZ
...THE SHOE SHOP........DN54 05Y
X102...THE SHOE SHOP........DN54 05Y
代码:
SELECT *
FROM mailing
WHERE postcode IS NOT NULL AND postcode <> '' AND
postcode IN (SELECT postcode FROM mailing group by postcode HAVING COUNT(postcode) > 1)
ORDER BY postcode;
已尝试在帐号上使用另一个计数器,但根本没有取回任何数据
解决方案
您可以将NOT EXISTS
andEXISTS
用于 2 个条件:
SELECT m.* FROM mailing m
WHERE
NOT EXISTS (
SELECT 1 FROM mailing
WHERE acc = m.acc AND custname <> m.custname
)
AND
EXISTS (
SELECT 1 FROM mailing
WHERE postcode = m.postcode and acc <> m.acc
)
如果您只想要邮政编码重复的记录,但前提是它们用于不同的帐号,则仅使用 EXISTS:
SELECT m.* FROM mailing m
WHERE
EXISTS (
SELECT 1 FROM mailing
WHERE postcode = m.postcode and acc <> m.acc
)
推荐阅读
- logging - 如何将我当前的日志基础设施与 Kephas 集成?
- c# - VSIX - XML 文档中的自定义折叠
- javascript - 图像未在 html 的整页图像滑块中正确加载
- python - Django通过父对象获取子对象
- openoffice-calc - 如何在打开的办公室计算中从同一文件的另一个工作表创建指向一个工作表的单元格的链接?
- swift - Swift 无法将 NSDictionaryM 的值转换为 NSData
- mysql - 分组的两列的 MySQL 计数
- javascript - DataTables - drawCallback 事件的一个版本,可以访问新加载的 AJAX
- elasticsearch - Elasticsearch - 聚合多个字段,按计数过滤并按计数排序
- python - 如何在圆形网格中插值