Tsql 如何将拥有';名、姓和出生日期';与Employee表中的相同
我需要拿出名字、姓氏和出生日期相同的记录。 请找到下面的例子Tsql 如何将拥有';名、姓和出生日期';与Employee表中的相同,tsql,Tsql,我需要拿出名字、姓氏和出生日期相同的记录。 请找到下面的例子 Employeeid firstname lastname DOB 00010 ravi sagi 22/01/1990 00035 ravi sagi 22/01/1990 00060 vasanth guptha 20/01/1987 00115 vasanth guptha 20/01/1987 你能帮我写下
Employeeid firstname lastname DOB
00010 ravi sagi 22/01/1990
00035 ravi sagi 22/01/1990
00060 vasanth guptha 20/01/1987
00115 vasanth guptha 20/01/1987
你能帮我写下这个查询吗。试试这个:
select *
from
(
select *,
count(*) over(partition by firstname, lastname, DOB) as CC
from YourTable
) as T
where T.CC > 1
试试这个:
select *
from
(
select *,
count(*) over(partition by firstname, lastname, DOB) as CC
from YourTable
) as T
where T.CC > 1
您可以通过比较
firstname
、lastname
和DOB
将JOIN
表与自身连接,以确保它们的值相同,然后确保employeeid
不相同:
select *
from yourtable t1
inner join yourtable t2
on t1.firstname = t2.firstname
and t1.lastname = t2.lastname
and t1.dob = t2.dob
and t1.empid != t2.empid
上述查询可能会显示重复记录,因此您可以使用以下内容(请参阅):
或者您可以使用EXISTS
(请参阅):
您可以通过比较
firstname
、lastname
和DOB
将JOIN
表与自身连接,以确保它们的值相同,然后确保employeeid
不相同:
select *
from yourtable t1
inner join yourtable t2
on t1.firstname = t2.firstname
and t1.lastname = t2.lastname
and t1.dob = t2.dob
and t1.empid != t2.empid
上述查询可能会显示重复记录,因此您可以使用以下内容(请参阅):
或者您可以使用EXISTS
(请参阅):
你好,蓝脚,非常感谢:)明白了。如果有两个以上的人有相同的名字和相同的出生,这个查询将返回(第1行)*行,因此7个相同的生日将返回42个rows@t-克劳森:你是对的,我可能会在查询中包含一个
DISTINCT
,以删除任何DUP…请参阅我的编辑。DISTINCT不是解决错误查询的好方法。连接仍在处理器上以硬应变处理,5秒,2508个相同名称/dob。如果您想使用联接加快查询速度,我会使用exists(不到1秒),尽管Mikaels解决方案要好得多。@t-clausen.dk我编辑了一个exists
查询。我更喜欢over()
版本的解决方案,但我想提供一种可以在sql server之外工作的替代方案。:)你好,蓝脚,非常感谢:)明白了。如果有两个以上的人有相同的名字和相同的出生,这个查询将返回(第1行)*行,因此7个相同的生日将返回42个rows@t-克劳森:你是对的,我可能会在查询中包含一个DISTINCT
,以删除任何DUP…请参阅我的编辑。DISTINCT不是解决错误查询的好方法。连接仍在处理器上以硬应变处理,5秒,2508个相同名称/dob。如果您想使用联接加快查询速度,我会使用exists(不到1秒),尽管Mikaels解决方案要好得多。@t-clausen.dk我编辑了一个exists
查询。我更喜欢over()
版本的解决方案,但我想提供一种可以在sql server之外工作的替代方案。:)