如果该列值仅作为示例,我想使用查询进行分组依据
First Name Last Name DOB
Nimal Herath 1987/03/15
Kamal Bandara Null
sunil Perera 1988/08/20
Kasun Sandaruwan 1985/07/02
Nimal Herath Null
Kamal Bandara Null
Sunil Perera 1988/08/20
Kasun Sandaruwan 1997/03/10
所以我需要让具有相同名字和姓氏和相同出生日期的用户(包括空DOB)
当我使用“分组依据”时,如果一个用户的DOB为空而另一个用户具有值,则返回具有相同值但不会返回的用户
我的结果应该如下
First Name Last Name DOB Count
Kamal Bandara Null 2
Sunil Perera 1988/08/20 2
Nimal Herath 1987/03/15 2
我尝试了此查询
Select * From Users Group By FirstName,LastName,Dob HAVING Count(*) >1
这将返回所有具有相同DOB的重复用户,如果两个都为null,但不会返回一个具有dob,而另一个则为null
答案 0 :(得分:1)
尝试一下:
SELECT `FirstName`, `LastName`, `DOB`, count(*) as Count
FROM table
GROUP BY `FirstName`, `LastName`, `DOB`
HAVING count(*) > 1
答案 1 :(得分:1)
您似乎想要:
select FirstName, LastName, max(dob) as dbo, count(*)
from Users
group by FirstName, LastName
having count(distinct dob) <= 1;
Here是db <>小提琴。
答案 2 :(得分:1)
您只应group by FirstName, LastName
并在HAVING
子句中设置条件:
select
firstname, lastname, max(dob) dob, count(*) count
from users
group by firstname, lastname
having
count(distinct dob) <= 1
and
count(*) > 1
请参见demo。
结果:
| firstname | lastname | dob | count |
| --------- | -------- | ---------- | ----- |
| Kamal | Bandara | | 2 |
| Nimal | Herath | 1987/03/15 | 2 |
| sunil | Perera | 1988/08/20 | 2 |