如果我有一个数据表如下:
ID Name Birthday
------ -------- ------------
01 Eric 06/20
02 Judy 03/15
03 Mary 04/01
04 John 03/15
05 Judy 06/20
06 John 09/11
如何根据名称获得结果:
ID Name Birthday
------ -------- ------------
02 Judy 03/15
04 John 03/15
05 Judy 06/20
06 John 09/11
因为朱迪和约翰都出现过不止一次(重复)。
以生日为基础:
ID Name Birthday
------ -------- ------------
01 Eric 06/20
02 Judy 03/15
04 John 03/15
05 Judy 06/20
因为06/20和03/15都出现了不止一次!
答案 0 :(得分:2)
您应该在SQL Server中查找WHERE,GROUP BY子句以及INNER查询和JOIN。 以下是MSDN文档的链接
https://docs.microsoft.com/en-us/sql/t-sql/queries/where-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017
使用GROUP BY和WHERE您对案例1的查询应为:
Select * from Tbl where Name in
(
Select Name
from Tbl
Group by Name
HAVING COUNT(1)>1
)
同样第二个结果应该是:
Select * from Tbl where Birthday in
(
Select Birthday
from Tbl
Group by Birthday
HAVING COUNT(1)>1
)
答案 1 :(得分:2)
基于姓名
select * from myTable where name in(
select Name from myTable group by Name having count(*)>1)
你可以对birtday进行一些小改动
这是SQL Fiddle链接,您可以在其中根据您的真实数据库更改表名称或字段数据类型
答案 2 :(得分:1)
为什么不使用存在?
select *
from table t
where exists (select 1
from table
where Name = t.name
having count(1) > 1
);
要根据Birthday
获取日期,请在内部查询中使用Birthday
列。