出于某种原因,即使查询在技术上符合条件,它也返回除 2 条记录以外的所有记录

库什

我今天在我的一个应用程序中发现了一些奇怪的东西 - 实际上有人向我指出了这一点。我有一个包含一大堆客户的表,让用户运行报告以查找潜在的重复项。这是一个初步的重复搜索,所以我按照名字和姓氏的前几个字符进行搜索。

假设我有以下客户列表:

tblA
ClientID        FName         LName
1               Carol         Villa
2               Carol         Villa
3               Gainy         Brimes
4               Gainy         Brimes

这是我正在使用的查询:

 select ClientID, FName, LName 
 from (select t.*,  count(*) over (partition by (substring(FName,0,4)), (substring(LName,0,4)), dob) as cnt  from tblClients t   ) t  
 where cnt > 1  
 order by  FName, LName

如果我对这个表运行这个查询,我只会得到这些记录:

ClientID      FName        LName
1             Carol        Villa
2             Carol        Villa

它没有向我展示Gainy Brimes,有什么原因吗?

卢克风暴

答案已经被库什自己发现了。
由于 DOB 用于窗口函数的分区,因此不匹配的 DOB 可能会忽略一些“可疑”重复项。

但这里有一个小测试脚本来演示这种效果:

declare @tblClients table (ClientID int, FName varchar(30), LName varchar(30), dob int);
insert into @tblClients (ClientID, FName, LName, dob) values
 (1,'Carol','Villa',100)
,(2,'Carina','Vilpo',100)
,(3,'Garcy','Brimes',100)
,(4,'Garry','Bricks',200)
;

select ClientID, FName, LName
, dob, cnt, rn
, CASE WHEN cnt > 1 THEN 'Has Partial Dups' ELSE 'No Partials Dups' END as ThereBeDups
from 
(
 select ClientID, FName, LName, dob,  
 count(*) over (partition by dob, substring(FName,1,3), substring(LName,1,3)) as cnt,
 row_number() over (partition by dob, substring(FName,1,3), substring(LName,1,2) order by ClientID desc) as rn
 from @tblClients
) t
--where cnt > 1
order by  FName, LName;

结果:

ClientID    FName   LName   dob cnt rn  ThereBeDups
--------    -----   -----   --- --- --  ----------------
2           Carina  Vilpo   100 2   1   Has Partial Dups
1           Carol   Villa   100 2   2   Has Partial Dups
3           Garcy   Brimes  100 1   1   No Partial Dups
4           Garry   Bricks  200 1   1   No Partial Dups

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何选择除最后2条以外的所有表记录?

来自分类Dev

使用Linq来查询除一条记录以外的其他所有记录

来自分类Dev

根据特定列排序后如何获取除前5条记录以外的所有记录

来自分类Dev

iptables记录除ICMP以外的所有记录

来自分类Dev

从表中的分组记录中选择除最后一条记录之外的所有记录

来自分类Dev

如何将所有记录合并为2条记录并删除所有未合并的记录?

来自分类Dev

如何在下一条记录等于上一条记录时对所有记录进行分组

来自分类Dev

如何使用linq跳过最后2条记录并获取所有其他记录?

来自分类Dev

删除除最后三条记录以外的记录

来自分类Dev

即使有2条记录具有相同的时间戳,也可以获取最新的条目

来自分类Dev

删除数据库中除一条记录外的所有记录

来自分类Dev

从表中查找重复记录,并删除除最近日期以外的所有记录

来自分类Dev

选择每个组中除最大记录以外的所有记录

来自分类Dev

如何删除访问表中除最近记录以外的所有记录

来自分类Dev

更新SQL Server表中除重复记录之一以外的所有记录

来自分类Dev

从表中查找重复记录,并删除除最近日期以外的所有记录

来自分类Dev

sql查询不检索所有记录只检索最后一条记录

来自分类Dev

即使2条记录具有相同的时间戳记,也可以获取最新的条目

来自分类Dev

Rails 5 API - has_many 通过创建操作返回 2 条记录,尽管只有 1 条记录保留在数据库中

来自分类Dev

Symfony2应用程序,MongoDB:计算符合条件的所有记录

来自分类Dev

为什么我的 GraphQL 查询返回一条记录失败,但我查找所有记录的查询工作正常?

来自分类Dev

选择与条件匹配的所有节点,并带有nn关系的第一条记录

来自分类Dev

使用Linq来查询除一条记录以外的其他记录

来自分类Dev

jQuery选择器-除最后3条记录外,表的所有行

来自分类Dev

TSQL-删除除每组1条记录外的所有行

来自分类Dev

根据 2 种排序条件更新 1 条记录

来自分类Dev

使用laravel雄辩的关系来检索除NULL以外的所有记录

来自分类Dev

Rails 查找除已关联的第二级以外的所有记录

来自分类Dev

为什么SQL NOT EXISTS返回所有NULL值的1条记录

Related 相关文章

  1. 1

    如何选择除最后2条以外的所有表记录?

  2. 2

    使用Linq来查询除一条记录以外的其他所有记录

  3. 3

    根据特定列排序后如何获取除前5条记录以外的所有记录

  4. 4

    iptables记录除ICMP以外的所有记录

  5. 5

    从表中的分组记录中选择除最后一条记录之外的所有记录

  6. 6

    如何将所有记录合并为2条记录并删除所有未合并的记录?

  7. 7

    如何在下一条记录等于上一条记录时对所有记录进行分组

  8. 8

    如何使用linq跳过最后2条记录并获取所有其他记录?

  9. 9

    删除除最后三条记录以外的记录

  10. 10

    即使有2条记录具有相同的时间戳,也可以获取最新的条目

  11. 11

    删除数据库中除一条记录外的所有记录

  12. 12

    从表中查找重复记录,并删除除最近日期以外的所有记录

  13. 13

    选择每个组中除最大记录以外的所有记录

  14. 14

    如何删除访问表中除最近记录以外的所有记录

  15. 15

    更新SQL Server表中除重复记录之一以外的所有记录

  16. 16

    从表中查找重复记录,并删除除最近日期以外的所有记录

  17. 17

    sql查询不检索所有记录只检索最后一条记录

  18. 18

    即使2条记录具有相同的时间戳记,也可以获取最新的条目

  19. 19

    Rails 5 API - has_many 通过创建操作返回 2 条记录,尽管只有 1 条记录保留在数据库中

  20. 20

    Symfony2应用程序,MongoDB:计算符合条件的所有记录

  21. 21

    为什么我的 GraphQL 查询返回一条记录失败,但我查找所有记录的查询工作正常?

  22. 22

    选择与条件匹配的所有节点,并带有nn关系的第一条记录

  23. 23

    使用Linq来查询除一条记录以外的其他记录

  24. 24

    jQuery选择器-除最后3条记录外,表的所有行

  25. 25

    TSQL-删除除每组1条记录外的所有行

  26. 26

    根据 2 种排序条件更新 1 条记录

  27. 27

    使用laravel雄辩的关系来检索除NULL以外的所有记录

  28. 28

    Rails 查找除已关联的第二级以外的所有记录

  29. 29

    为什么SQL NOT EXISTS返回所有NULL值的1条记录

热门标签

归档