sql - 如果存在重复项,则根据另一列选择值

标签 sql ms-access ms-access-2013

我有一个很大的邮政编码和地区列表,这些列表来自两个不同的数据源。

我的专栏看起来像: 邮政编码、地区、来源

值可能如下所示:

76345, ShiPaTown, Source1
76345, ShiPaTown, Source2
12110, South Park, Source1
12110, Mars, Source2

我的目标是每个唯一的邮政编码只有一行,如果在 Source1 和 Source2 中都有一个邮政编码的记录,则始终从 Source1 获取领土。

所以之前的列表会缩减为:

76345, ShiPaTown
12110, SouthPark

最佳答案

这是一个优先查询。这是一种方法:

select zip, town
from t
where source = 'source1'
union all
select zip, town
from t
where source = 'source2' and
      not exists (select 1 from t as t2 where t2.zip = t.zip and t2.source = 'source1');

关于sql - 如果存在重复项,则根据另一列选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38149218/

相关文章:

ms-access - 如何在连续表单上有条件地设置文本框边框格式?

mysql - MS Access 2013 : Intermittently Hidden Records in Form

mysql - 接线表 - 除更换外

sql - 为什么使用日期值时,IIF 和 ISNULL 的返回结果与我的预期不符?

select 查询的 mysql 隔离级别(插入可见性)

sql - 如何使用另一个表上的聚合查询更新一个表中的多行

ms-access - MS Access 2013 仅显示启动表单,仅显示其他内容

mysql - 使用索引导致 MySQL 查询无限时间卡住

c# - SQL语句中语法错误的问题

Access 中的 Sqlite 链接表再次给出 #deleted 值