Mysql 仅通过在同一字段中具有不同值进行分组

Mysql 仅通过在同一字段中具有不同值进行分组,mysql,sql,group-by,Mysql,Sql,Group By,我想使用一个查询来分组,如果该列的值不同,只是作为一个示例,我有一个这样的表 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

我想使用一个查询来分组,如果该列的值不同,只是作为一个示例,我有一个这样的表

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)的用户

当我使用GROUPBY时,它返回具有相同值的用户,但如果一个用户的DOB为null,而另一个用户将具有值,它将不会返回

我的结果如下

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,请尝试以下操作:


选择'FirstName','LastName','DOB',count(*)作为计数
从桌子上
按'FirstName','LastName','DOB'分组`
计数(*)大于1的
您似乎想要:

select FirstName, LastName, max(dob) as dbo, count(*)
from Users
group by FirstName, LastName 
having count(distinct dob) <= 1;
选择FirstName、LastName、max(dob)作为dbo、count(*)
来自用户
按姓氏分组

拥有count(distinct dob)您应该
仅按FirstName、LastName
分组,并在
拥有
子句中设置条件:

select 
  firstname, lastname, max(dob) dob, count(*) count
from users  
group by firstname, lastname
having 
  count(distinct dob) <= 1
  and
  count(*) > 1

显示查询到目前为止您尝试了什么提示:将“null”分配给其他value@Strawberry基本上给了你答案。我将添加另一个提示:@草莓。非常感谢。我修正了答案并添加了一个dbfiddle。如果Dob将000/00/00而不是null 0000/00/00,则不允许将其作为日期时间值。是的,但在我的数据库中有一些行包含Dob作为000/00/00,这意味着Dob的数据类型是VARCHAR。如果您想将
000/00/00
视为空,请将
max(dob)
替换为
max(dob='000/00/00'时为空,否则为空,dob结束)
不工作,您可以检查此项吗
| firstname | lastname | dob        | count |
| --------- | -------- | ---------- | ----- |
| Kamal     | Bandara  |            | 2     |
| Nimal     | Herath   | 1987/03/15 | 2     |
| sunil     | Perera   | 1988/08/20 | 2     |