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

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/

10-13 00:51