如果列值不同,我想使用一个查询来分组,作为一个例子,我有一个这样的表
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
当我使用Group by时,返回值相同的用户,但如果一个用户的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的所有重复用户,如果两者都为空,但不会返回一个具有DOB,另一个为空
最佳答案
您只应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 |
关于mysql - GROUP BY仅在同一字段中具有不同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57306282/