sql - 根据具有重复值的 2 列获取唯一行
问题描述
我有一个 3 列 6 行的表:
从突出显示的红色文本可以看出,Ash 和 Joey 具有相同的姓氏和街道地址,即“姓氏”列和“街道”列具有重复值。我只想得到其中一个。
期望的结果是在“Last”和“Street”列上获得没有重复值的行:
仅保留Ash或Joey 中的一个(我在此示例中只使用了 Ash,但 Joey 也可以 - 只需要 1 个或另一个,而不是两者)。
这甚至可能吗?任何建议表示赞赏,谢谢。
PS“街道”列实际上是在不同的表上,所以图表的图片代表了 2 个已经加入的表。
解决方案
由于您不关心副本的哪个记录幸存下来,您可以试一试。它实际上会按字母顺序保留第一个First
DROP TABLE IF EXISTS #t;
CREATE TABLE #t (First VARCHAR(255), Last VARCHAR(255), Street VARCHAR(255));
INSERT #t SELECT 'Ash', 'Williams', '123 Main';
INSERT #t SELECT 'Ben', 'O''Shea', '456 Grand';
INSERT #t SELECT 'Claire', 'Port', '543 Jasper';
INSERT #t SELECT 'Denise', 'Stone', '543 Jasper';
INSERT #t SELECT 'Erica', 'Thomas', '789 Holt';
INSERT #t SELECT 'Joey', 'Williams', '123 Main';
WITH dupes AS (
SELECT First,
Last,
Street,
ROW_NUMBER() OVER (PARTITION BY Last, Street ORDER BY First) RowNum
FROM #t
)
SELECT First, Last, Street
FROM dupes
WHERE RowNum = 1;
推荐阅读
- django - Django:在结果中填充用户可选择的数据库字段
- vue.js - 如何只添加一次全局分隔符以使其适用于所有组件?
- c# - 隐式转换问题(整数文字)
- powershell - Send-MailMessage 是否有 Integrated Security=SSPI 选项?
- javascript - 我怎样才能得到 [ Promise {
}]? - scala - 从 Spark 1.6 升级到 2.1 - 不兼容的类更改错误
- redis - 我的 redis 服务器每隔几分钟就会丢失一次密钥
- r - 汇总计数数据并返回 R 中因子的最高级别
- ionic4 - 在 ionic 4 中使用 Geolocation 和 Google Map 离子原生插件时遇到问题
- javascript - WebBrowser InvokeScript“评估”错误