gpt4 book ai didi

mysql - 有没有人有相同的名字、中间名和姓氏?列出他们和他们的完整地址

转载 作者:行者123 更新时间:2023-11-29 03:15:25 26 4
gpt4 key购买 nike

我们有选择语句但无法返回超过 1 人。我们知道数据库中有两个人可以满足要求。

From Person P
GROUP BY First_Name, Mid_Name, Last_Name
HAVING COUNT(*)>1;

| First_Name | Mid_Name | Last_Name | Street    |
+------------+----------+-----------+-------------+
| Steven | Lee | SHAFFER | 939 POPE RD |
+------------+----------+-----------+-------------+

最佳答案

根据您的尝试,您可以使用聚合查询加入表:

select p.*
from person p
inner join (
select first_name, mid_name, last_name
from person
group by first_name, mid_name, last_name
having count(*) > 1
) x
on x.first_name = p.first_name
and x.mid_name = p.mid_name
and x.last_name = p.last_name

或者,如果您在表中有一个唯一的列,比如 id,您可以使用 exists:

select p.*
from person p
where exists (
select 1
from person p1
where
p1.id <> p.id
and p1.first_name = p.first_name
and p1.mid_name = p.mid_name
and p1.last_name = p.last_name
)

最后,如果你运行的是 MySQL 8.0,你可以做一个窗口计数:

select * 
from (
select
p.*,
count(*) over(partition by first_name, mid_name, last_name) cnt
from person p
) p
where cnt > 1

为了提高这些查询的性能,您需要在 person(first_name, mid_name, last_name) 上建立索引(如果您使用第二个索引,请将 id 添加到该复合索引中解决方案)。

关于mysql - 有没有人有相同的名字、中间名和姓氏?列出他们和他们的完整地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58906623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com