首页 > 解决方案 > 选择一列中的多个值映射到另一列中的相同值的行

问题描述

我有一张包含用户 ID、地址和邮政编码的表格。每个用户 ID 可以有多个条目(它存储他们以前的所有地址和邮政编码),但存在地址已更新但邮政编码未更新的问题。我需要找到所有用户 ID,对于给定的用户,地址已更改但邮政编码未更新。

+----+---------+----------+
| ID | Address | Postcode |
+----+---------+----------+
|  1 | Town A  | abcde2   |
|  1 | Town B  | abcde2   |
|  3 | Town B  | defgh6   |
|  3 | Town B  | defgh6   |
|  4 | Town C  | ijklm7   |
|  5 | Town A  | ijklm7   |
|  5 | Town C  | abcde2   |
+----+---------+----------+

输出应该是:

+----+---------+----------+
| ID | Address | Postcode |
+----+---------+----------+
|  1 | Town A  | abcde2   |
|  1 | Town B  | abcde2   |
+----+---------+----------+

或者只是ID。

标签: sqlsubquery

解决方案


我认为下面的代码可以解决您的问题:

SELECT A.ID, A.ADDRESS, A.POSTCODE FROM 
TABLE A
JOIN TABLE B ON A.ID=B.ID AND A.ADDRESS=B.ADDRESS AND A.POSTCODE<>B.POSTCODE;

推荐阅读